我正在尝试从数据透视表中获取数据,但显示为“正在尝试获取非对象的属性'标签'”。即使表中有一些数据,控制器中的find(1)也不会返回任何内容。
我的模特:
class Videos extends Model
{
protected $table = 'videos';
function tags(){
return $this->belongsToMany('App\Models\Videos\Tags','tag_video','video_id','tag_id');
}
class Tags extends Model
{
function videos(){
return $this->belongsToMany('App\Models\Videos\Videos','tag_video', 'tag_id','video_id');
}
}
我的控制器:
public function fetch(){
$videos_from_supercategories =
$videos_with_tags = Videos::find(1);
$tags = $videos_with_tags->tags->first();
$data['tags']=$tags;
return $data;
}
有人可以帮忙吗?
答案 0 :(得分:1)
Videos::find(1)
尝试查找id = 1的视频,如果未显示则不返回任何内容,并且您收到异常,则可以使用findOrFail(1)
。
findOrFail将引发模型未找到异常,您希望发生这种情况,因为否则您将尝试访问非对象上的属性。
在关系中,您必须指定要包括的列:
public function fetch()
{
return Videos::findOrFail(1)->tags->first()->pivot->column1;
}
class Videos extends Model
{
protected $table = 'videos';
function tags()
{
return $this->belongsToMany('App\Models\Videos\Tags','tag_video','video_id','tag_id')->withPivot('column1', 'column2');
}
}