我正在使用Laravel 5.2,如何編寫此查詢?如何在Laravel 5.2中編寫此查詢?
有兩個表,user
和articles
,它們有一對多的關係。
我想根據這些條件查詢用戶:
1,顯示有文章的用戶,而不是顯示沒有文章的用戶。
2,文章包含兩種類型,已發表和未發表,「1」表示已發佈,顯示發表文章,未顯示未發表文章。
每頁顯示3,30個用戶。
像這樣,這是不對的,如何修改它?
的HomeController:
public function index()
{
$users = User::with('articles')->where('is_published','=',1)->paginate(30);
return view('index', compact('users'));
}
用戶:
class User extends Model implements AuthenticatableContract, CanResetPasswordContract, HasRoleAndPermissionContract
{
use Authenticatable, CanResetPassword, HasRoleAndPermission;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function articles()
{
return $this->hasMany(Article::class);
}
}
文章:
class Article extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
//edit-1:
//Scope a query to only include status=1.
public function scopeStatus($query)
{
return $query->where('status',1);
}
}
編輯:
@SSuhat @RamilAmr謝謝!如果在模型局部範圍「文章」,如何修改答案:
$query = User::with(['articles' => function ($q) {
$q->where('is_published', 1);
}])
->has('articles') //<<<<<<<<<
->paginate(30);
return $query;
你是什麼意思「這是不對的」?你可以發佈你的雄辯模型,這將是一個很大的幫助! –
@JohnRoca Thansk.I發佈了雄辯的模型。 – sunshine