tp5.1資料表的聯合查詢
資料表的聯合查詢本質上是找表的交集 先找交集再交叉並集
1 分別找到兩個表 2分別在兩張表裡找打符合join()裡的條件的表,在找到符合where條件裡的表 3兩張表裡的條件交叉並集
Db::name()->alias()->join()->where()->select()
name('table'):第一個集合:表裡的所有資料
join($join,$codition):第二個集合:$join, $condition交集的條件 條件必須得是兩個表的列的比較可以是個陣列
alias('table t')給表起個名字
以$condition為條件在表2中找到符合條件的集合與where()的條件中組成並集
$permision = Db::name('user_user')->alias('u')->where(['u.id'=>$playerid,'g.type'=>2])->field('g.gold,u.gold')->join('games_lower_limit g','u.integral>g.sliver or u.gold>g.gold')->select();
field(u.gold, g.gold )名字相同的後面一個欄位會替換掉前面一個欄位
總結:每一個條件都視為一個集合,每個集合交集就是聯合查詢的結果,where關聯陣列(['s.grade'=>'60','s.course'=>'english'])
公式:(["key"=>"value","key"=>"value"])所有的鍵值對為and模式
索引陣列:([ ['u.grade','>','60'] , ['u.grade','=','60'] , ['u.name','like','wen%']]) 公式:([ ["key","operator","value"] ,... ])所有條件為and模式
上述使用whereOr即可把條件改為or模式
字串條件("u.grade > 60 and u.name like wen%")