Laravel 同一表上的多个关系

Laravel 同一表上的多个关系,laravel,laravel-4,eloquent,relationships,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); } 在我的控制器中,

在我的属性模型中,我定义了这两个关系

public function images() {
    return $this->hasMany('Image')
        ->where('approved', '=', 1);
}
public function pending_images() {
    return $this->hasMany('Image')
        ->where('approved', '=', 0);
}
在我的控制器中,我创建一个属性对象,并尝试获取已批准和挂起的图像

$images = $property->images;
$pending = $property->pending_images;

var_dump($images);
var_dump($pending);
exit;
$images
变量是预期的
illighte\Database\elount\Collection

然而,
$pending
只是
NULL

我尝试使用获取最后一个DB查询,但似乎没有执行挂起的查询。(最后一次查询运行的
approved=1
,这是针对
图像
关系的。)


我的怀疑是,这可能是一个问题,关系在同一张表上,但我被难住了。

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

public function pendingImages() {
   return $this->hasMany('Image')
     ->where('approved', '=', 0);
}
然后,它将按预期工作,而且您可以通过以下任一方式访问它:

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

动态属性仅适用于camelCase方法,仅此而已。

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

public function pendingImages() {
   return $this->hasMany('Image')
     ->where('approved', '=', 0);
}
然后,它将按预期工作,而且您可以通过以下任一方式访问它:

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

动态属性仅适用于camelCase方法,仅此而已。

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

public function pendingImages() {
   return $this->hasMany('Image')
     ->where('approved', '=', 0);
}
然后,它将按预期工作,而且您可以通过以下任一方式访问它:

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

动态属性仅适用于camelCase方法,仅此而已。

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

public function pendingImages() {
   return $this->hasMany('Image')
     ->where('approved', '=', 0);
}
然后,它将按预期工作,而且您可以通过以下任一方式访问它:

$property->pending_images == $property->pendingImages;
仅此而已,动态属性仅适用于camelCased方法