在我的物业模型中,我定义了这两个关系
public function images() {
return $this->hasMany('Image')
->where('approved', '=', 1);
}
public function pending_images() {
return $this->hasMany('Image')
->where('approved', '=', 0);
}
在我的Controller中,我创建了一个Property对象,并尝试获取已批准和待定的图像。
$images = $property->images;
$pending = $property->pending_images;
var_dump($images);
var_dump($pending);
exit;
$images
变量符合预期Illuminate\Database\Eloquent\Collection
。
但是,$pending
只是NULL
!
我尝试使用this answer获取最后一个数据库查询,似乎甚至没有执行挂起查询。 (最后一次查询运行approved = 1
,用于images
关系。)
我怀疑这可能是一个问题,这种关系在同一张桌子上,但我很难过。
答案 0 :(得分:3)
您需要将该关系重命名为camelCase:
public function pendingImages() {
return $this->hasMany('Image')
->where('approved', '=', 0);
}
然后它将按预期工作,而且您将能够以任何方式访问它:
$property->pending_images == $property->pendingImages;
动态属性仅适用于所有的camelCased方法。