gpt4 book ai didi

php - laravel 5 上 Eloquent ORM 关系

转载 作者:搜寻专家 更新时间:2023-10-31 20:35:21 24 4
gpt4 key购买 nike

我在 laravel 5 上创建了消息系统,但我无法在恢复页面上获取发件人信息(例如姓名电子邮件......)

我有消息表:

public function up()
{
Schema::create('messages', function(Blueprint $table){
$table->increments('id');
$table->integer('destination_id')->unsigned();
$table->integer('source_id')->unsigned();
$table->string('sujet');
$table->text('contenu');
$table->boolean('vu')->default(0);
$table->boolean('repondu')->default(0);
$table->timestamps();
$table->foreign('source_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('destination_id')->references('id')->on('users')->onDelete('cascade');
});
}

在我创建的模型上添加:

消息模型:

class Message extends Model {

public function user()
{
return $this->belongsTo('App\User');
}
}

在用户模型上我添加了这个函数:

public function message()
{
return $this->hasMany('App\Message');
}

但是当我尝试获取用户消息并想要获取例如 {{$message->user->name}} 时,我收到一条错误消息,提示我尝试获取非对象的属性

这是这个页面的 Controller

最佳答案

当您使用时,默认用户的关键字段:return $this->belongsTo('App\User'); 如果表名如下:table_name_id在此示例中将类似于:user_id

我看到您需要与以下用户表的关系:

$table->integer('destination_id')->unsigned();
$table->integer('source_id')->unsigned();

所以最好的解决方案是创建两个方法,例如:

class Message extends Model 
{
public function source()
{
return $this->belongsTo('App\User', 'source_id');
}

public function destination()
{
return $this->belongsTo('App\User', 'destination_id');
}
}

然后你可以调用:

{{$message->source->name}}

{{$message->destination->name}}

当然,您可以用其他方式命名此方法,例如:sourceUser()

关于php - laravel 5 上 Eloquent ORM 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36981044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com