使用Laravel 5.2,我在团队模型中设置了一个mutator:
public function getNameAttribute($value)
{
if ($this->exists) {
return !empty($value) ? $value : $this->organization()->first()->name;
}
return null;
}
与组织模型的关系:
public function organization()
{
return $this->belongsToMany('App\Models\Organization')->withTimestamps();
}
当$team->name
为空时,我尝试获取$this->organization()->first()->name
,但发生了错误:
尝试获取非对象的属性
两个小时后,我没有发现问题
编辑:
Schema::table('organization_team', function (Blueprint $table) {
$table->foreign('organization_id')
->references('id')
->on('organizations')
->onUpdate('cascade')
->onDelete('cascade');
$table->foreign('team_id')
->references('id')
->on('teams')
->onUpdate('cascade')
->onDelete('cascade');
});
答案 0 :(得分:0)
这很简单,就这样做:
public function getNameAttribute($value)
{
if ($this->exists) {
return !empty($value) ? $value : $this->organization
->first()->name;
}
return null;
}
答案 1 :(得分:0)
$this->organization()->first()
必须在您的应用程序中返回null。
请检查您的数据库并添加一些关系数据。
您可以找到这样的组织名称。
$this->organization->first(function ($item) {
return ! empty($item->name);
})->name;
答案 2 :(得分:0)
public function organization() { return $this->belongsToMany('App\Models\Organization')->withDefault(new Organization); }