我有模型房子与关系hasMany HousePhotos。 我尝试从table house_photos获取主照片的链接。
class House extends Model
{
public function photos(){
return $this->hasMany('app\HousePhoto');
}
public function get_main_photo(){
return $this->photos()->where('main', true);
}
}
控制器:
$house=House::find(1);
在视图中我使用
{{$house->main_photo()->link}}
并且出错了。
当我使用
时{{$house->main_photo()}}
我有了对象。如何获取链接到照片的字符串值?
答案 0 :(得分:1)
首先,您需要了解Builder对象和Collection对象之间的区别。
现在,函数get_main_photo
返回一个Builder对象(实际上是一个包含Builder的Relation对象)。
在这些对象上,您可以调用函数get()
来完成查询并获得结果。在这种情况下,您将获得一个Collection对象,您可以迭代它。
或者,在这种情况下,您似乎每个房子只有一张“主照片”,因此您可以拨打first()
:
public function get_main_photo(){
return $this->photos()->where('main', true)->first();
}
这将返回单个关联模型,您可以在该模型上访问->link
(如果找到模型)。
请记住,在调试的任何时候,您都可以调用方便的dd
函数(转储作为参数传递的对象并终止应用程序),以查看您正在处理的对象类型及其所有属性。 / p>