0
我有簡單的查詢正常工作,但我希望它正常使用ORM。Laravel查詢無法正常工作
我有以下SQL查詢:
SELECT career_solutions.*,
users.username,
users.profile_picture
FROM career_solutions
INNER JOIN users
ON users.id = career_solutions.user_id
INNER JOIN privacy_settings
ON privacy_settings.user_id = users.id
WHERE career_solutions.topic_category_id = $categoryid
AND ((privacy_settings.career_solutions = 0
AND public = 1)
OR ((users.id IN (SELECT contacts.contact_id
FROM contacts
WHERE contacts.user_id = $id)
OR users.id = $id)))
ORDER BY date DESC
LIMIT 5000
我直接傳遞查詢到DB門面的選擇方法,像這樣: DB::select($aboveQuery);
和它的正常工作。
我想用Laravel雄辯做同樣的事情。 通過使用下面的代碼,我沒有得到與上面相同的結果。下面的查詢有問題。
$career_solution = CareerSolution::with('user.role', 'user.privancy_setting', 'category', 'sub_category', 'country');
$career_solution = $career_solution->where(function ($query) {
$query->where('expires_at', '>=', date('Y-m-d'))
->orWhere('expires_at', '=', '0000-00-00');
});
$career_solution = $career_solution->Where(function ($query1) use ($id) {
$query1->Where(function ($query2) use ($id) {
$query2->whereHas('user.privancy_setting', function ($query3) {
$query3->where('privacy_settings.career_solutions', '=', 0);
})->where('public', '=', 1);
})->orWhere(function ($query4) use ($id) {
$query4->whereHas('user.contact', function ($query5) use ($id) {
$query5->where('contacts.user_id', '=', $id);
})->orWhere('user_id', '=', $id);
});
});
它沒有顯示與上述相同的結果,讓我知道如何使其與上面相同。
你不沒有正確使用「與」功能。該函數獲取關係名稱作爲參數,不像「user。*」 –
@GiacomoMasseroniChiaro,這是遠程關係的語法。 – Devon
你不用功能正常,即用戶。* – omkara