同一个表上的多个关系

时间:2014-05-22 16:18:59

标签: laravel laravel-4 eloquent relationships

在我的物业模型中,我定义了这两个关系

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关系。)

我怀疑这可能是一个问题,这种关系在同一张桌子上,但我很难过。

1 个答案:

答案 0 :(得分:3)

您需要将该关系重命名为camelCase:

public function pendingImages() {
   return $this->hasMany('Image')
     ->where('approved', '=', 0);
}

然后它将按预期工作,而且您将能够以任何方式访问它:

$property->pending_images == $property->pendingImages;

动态属性仅适用于所有的camelCased方法。