我有两个表:Users
和Images
。
因此,用户可以拥有一些图像。
对于这种关系,我在模型User
中有额外的功能:
public function images()
{
return $this->hasMany('App\Images', 'idElement', 'id');
}
在控制器中我有:
$users = Users::where('id', $id)->with("images")->get();
如何在images table
的{{1}}的控制器中添加其他条件?
现在这些表只能通过主键连接,但我还需要设置一个新条件。
答案 0 :(得分:3)
您可以使用回调功能过滤图片,请尝试以下操作:
$users = Users::where('id', $id)->with(["images" => function ($query){
$query->where('type', 1);
}])->get();
答案 1 :(得分:2)
对于类似这样的内容,您希望根据类型对图像的子集进行范围缩小,您可以添加另一种称为public function scopedImages()
的方法,并将其定义为:
public function scopedImages() {
return $this->hasMany('App\Images', 'idElement', 'id')->where("images.type", "=", 1);
}
在您的控制器中,您将像访问images()
上的User
功能一样访问此功能:
$users = Users::where('id', $id)->with(["scopedImages"])->get();
保留函数images()
,因此如果您需要查找附加到User
的所有图像,但添加此类附加功能可让您灵活处理要返回的内容以及何时返回。< / p>