[英]Laravel/Eloquent query going wrong
我有兩個表,一個表與用戶,一個表與他們的文檔名稱。 第一個表包含兩列:id和username。 第二個由三列組成:id,userid和document_name。
現在,我正在嘗試在控制器中創建查詢。 理想情況下,應該是如果有人訪問website.com/{documentname}
,則顯示所有者的用戶名。 此外,僅當當前登錄用戶是文檔的所有者時,才應該發生這種情況。 但是,事實證明這比我想象的要困難得多。 在這種情況下,我看不到我在做什么錯。
這是查詢:
$user = DB::table('documents')
->join('users', function($join)
{
$join->on('users.id', '=', 'documents.userid')
->where('documents.userid', '=', Auth::id())
->where('documents.document_name', '=', $document_name);
})
->get();
**Try this query :**
$user = DB::table('documents')
->leftJoin('users', 'users.id', '=', 'documents.userid')
->where('documents.userid', '=', Auth::id())
->where('documents.document_name', '=', $document_name);
->get();
$document_name
不在join函數的范圍內:您需要通過use
將其傳遞給閉包
$user = DB::table('documents')
->join('users', function($join) use ($document_name)
{
$join->on('users.id', '=', 'documents.userid')
->where('documents.userid', '=', Auth::id())
->where('documents.document_name', '=', $document_name);
})
->get();
編輯
因為WHERE條件適用於基表,而不適用於JOIN:
$user = DB::table('documents')
->join('users', function($join) {
$join->on('users.id', '=', 'documents.userid')
})
->where('userid', '=', Auth::id())
->where('document_name', '=', $document_name);
->get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.