<code>DB::table('topics')->select('topics.*', 'b.username', 'b.avatar', 'c.username as rname', 'd.cname') ->where('topics.is_hidden', 0) ->leftJoin('users b', 'b.uid', '=', 'topics.uid') ->leftJoin('users c', 'c.uid', '=', 'topics.ruid') ->leftJoin('nodes d', 'd.node_id', '=', 'topics.node_id') ->orderBy('ord', 'desc') ->take($limit)->get(); </code>
連線查詢取別名錯了
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'startbbs.stb_users b' doesn't exist (SQL: select stb_users b' doesn't exist (SQL: select
stb_topics b' doesn't exist/s. stb_b
.avatar
, stb_c
.username
as rname
, stb_d
.cname
stb_d
. on stb_b
.uid
= stb_topics
. uid
left join stb_users c
on stb_c
.uid
= stb_topics
.ruid
= stb_topics
.
node_id =
stb_topics.
node_id where
stb_topics .
is_hidden = 0 order by
ord desc limit 20)
回覆內容:
<pre class="brush:php;toolbar:false"><code>DB::table('topics')->select('topics.*', 'b.username',
'b.avatar', 'c.username as rname', 'd.cname')
->where('topics.is_hidden', 0)
->leftJoin('users b', 'b.uid', '=', 'topics.uid')
->leftJoin('users c', 'c.uid', '=', 'topics.ruid')
->leftJoin('nodes d', 'd.node_id', '=', 'topics.node_id')
->orderBy('ord', 'desc')
->take($limit)->get();
</code></pre>
連線查詢取別名錯了SQLSTATE[42S02]: Base table or view not found: 1146 Table 'startbbs.stb_users b' doesn't exist (SQL: select
stb_users b' doesn't exist (SQL: select
,
stb_c.
username as
rname,
stb_d.
cname
stb_d. on
stb_b.
uid =
stb_topics.
uid left join
stb_users c on
stb_c.
uid =
stb_topics.
ruid =
stb_topics.
node_id
= stb_topics
.node_id
where stb_topics
.is_hidden
= 0 order by ord
desc limit 20)
最好的做法是把這SQL複製到資料庫管理工具中執行下,看看是否是你建構的有問題
從你建構的sql看,是因為別名加上了表前綴'stb'