簡體   English   中英

Laravel /口才查詢出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM