我试图让所有用户的图像关系一对多。其中in images表的列类型等于1。
我创建的最近。
User::with('Images')->has('Images')->get();
但它不仅返回类型1的所有图像;
我也试过
$a = User::defaultImage()->get();
和用户模型def范围
public function scopeDefaultImage($query) {
$query->whereHas('Images', function ($query) {
$query->where('default', 1);
})->get();
return $query;
}
但它不会返回与图像的关系,只有用户
答案 0 :(得分:2)
您可能希望修改使用with
功能的方式。这将使得返回的唯一图像将是类型1。
User::with(['Images' => function($q) {
$q->where('type', 1);
}])->whereHas('Images', function($q) {
$q->where('type', 1);
})->get();
同时添加whereHas
,这只会返回图片类型为1的用户。
我还会在您的数据库中确保您确实拥有用户,并将它们附加到图像类型为1的图像中,这样您就可以确定应该获得一些数据。
添加其他约束,您只需链接到另一个whereHas
User::with(['Images' => function($q) {
$q->where('type', 1);
}])->whereHas('Images', function($q) {
$q->where('type', 1);
})->whereHas('Roles', function($q) {
$q->where('id', 5);
})->get();