同一张表上的多个关系
Posted
技术标签:
【中文标题】同一张表上的多个关系【英文标题】:Multiple relationships on same table 【发布时间】:2014-07-11 19:30:10 【问题描述】:在我的属性模型中,我定义了这两个关系
public function images()
return $this->hasMany('Image')
->where('approved', '=', 1);
public function pending_images()
return $this->hasMany('Image')
->where('approved', '=', 0);
在我的控制器中,我创建了一个 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
关系。)
我怀疑关系在同一张桌子上可能是个问题,但我被难住了。
【问题讨论】:
【参考方案1】:您需要将该关系重命名为 camelCase:
public function pendingImages()
return $this->hasMany('Image')
->where('approved', '=', 0);
然后它将按预期工作,而且您可以通过任何一种方式访问它:
$property->pending_images == $property->pendingImages;
动态属性仅适用于 camelCased 方法,仅此而已。
【讨论】:
以上是关于同一张表上的多个关系的主要内容,如果未能解决你的问题,请参考以下文章