我有問題查詢laravel表。Laravel查詢關係表
我有這樣的關係:每個用戶都有附件,並且附件屬於用戶。我在模型中寫了關係。
我的問題是:如何查詢,如果我想返回用戶與關係附件,但對於附件,其中級別=用戶級別?即使我在哪裏有回報給我的所有用戶附件。請幫忙!
我有問題查詢laravel表。Laravel查詢關係表
我有這樣的關係:每個用戶都有附件,並且附件屬於用戶。我在模型中寫了關係。
我的問題是:如何查詢,如果我想返回用戶與關係附件,但對於附件,其中級別=用戶級別?即使我在哪裏有回報給我的所有用戶附件。請幫忙!
當您查詢模型關係,你喜歡寫東西
$attachments = $userModel->attachments;
這是
$attachments = $userModel->attachments()->get();
一個快捷方式,你可以寫
$attachments = $userModel->attachments()->where('level', 'user')->get();
如果你想找到用戶衛生組織附件遇到具體限制,然後使用whereHas
方法
UserModel::whereHas('attachments', function ($attachmentQuery) {
$attachmentQuery->where('level', 'profile_level');
})->get();
如果從已經查詢模式要得到具體的附件,然後寫
$userModel->attachments()->where('level', 'profile_level')->get();
這是不可能的查詢兩者的usermodel和AttachementModel單查詢,它必須至少有兩個查詢。即使看起來UserModel::with('attachments')->get();
,它返回所有附件的用戶,在內部做兩個查詢。
編輯:
我注意到,你可以定義relation constraints內with
方法
UserModel::with(['attachments' => function ($attachmentQuery) {
$attachmentQuery->where('level', 'profile_level');
}])->get();
所以,如果你想找到用戶衛生組織附件滿足特定的約束,並渴望載荷的附件,那麼你可以做
$queryAttachments = function ($attachmentQuery) {
$attachmentQuery->where('level', 'profile_level');
};
UserModel::whereHas('attachments', $queryAttachments)
->with(['attachments' => $queryAttachments])->get();
是的這是正確的,但我想返回用戶與附件,但不是與所有附件,但與附件其中level = profile_level。我希望現在很清楚 –
我編輯了我的答案。 –
幾乎在那裏。但是現在我只有附件的對象沒有用戶信息:(我不知道是否有任何選項可以從後端進行此操作?如果不是,我只是返回用戶所有附件,然後在前端獲得特定附件。 –
您可以結合使用whereHas
和with
方法作爲:
Profile::whereHas('attachments', function ($q) {
$q->where('level', 'user');
})
->with(['attachments', function ($q) {
$q->where('level', 'user');
}])
->get();
好的,但在這種情況下,我必須得到用戶第一。我想做一個查詢,如:Profile :: with('attachment')。我想獲取對象配置文件與相關數據,但不是所有相關的數據,但其中level = user_level –