phpのlavarelフレームワークにおけるjoinとorWhereの使い方
1.前景問題要点:
1つのプロジェクトでは、テーブルクエリーが必要な場合に遭遇しました.また、テーブルを接続した後、キーワードで対応するデータをフィルタする必要があります.例えば、ロール名、ユーザー名、電話というフィールドを、入力したkeywordフィールドでフィルタする必要があります.
2.問題分析:
この場合、ユーザー・テーブルを注文書に連絡する必要があります.注文書にはuser_があります.idのフィールドは、注文するユーザ名を得ることができるので、ここではまず
次にクエリーの条件文を書く必要があります.私たちはまず最初のステップで有効な注文をクエリーする必要があります.次に、2番目のステップは受信したkeywordに基づいてフィルタリングされます.ここでは最初はwhereとorWhereを混合してクエリーを行いましたが、いつもクエリーの条件が含まれていないものがあります.ここでは関連資料を調べてから分かりました.ここではkeywordでフィルタリングしたクエリーを閉パッケージに書くことで、他のwhere文と相互に影響を及ぼさないことができます.
3.ソリューション:
注意:orWhereは、パッケージを閉じずに書くと、別々のクエリー条件に書きやすくなります
1つのプロジェクトでは、テーブルクエリーが必要な場合に遭遇しました.また、テーブルを接続した後、キーワードで対応するデータをフィルタする必要があります.例えば、ロール名、ユーザー名、電話というフィールドを、入力したkeywordフィールドでフィルタする必要があります.
2.問題分析:
この場合、ユーザー・テーブルを注文書に連絡する必要があります.注文書にはuser_があります.idのフィールドは、注文するユーザ名を得ることができるので、ここではまず
join
(連表)の使い方を説明する.よく使われるのは3種類のjoin()、leftJoin()、rightJoin(), 、 、
である. :
は、2つのテーブルで接続クエリを行う場合、2つのテーブルで完全に一致する結果セットのみを保持します.つまり、2つのテーブルの交差です. :
は、2つのテーブルで接続クエリーを行うと、右のテーブルに一致するレコードがなくても、左のテーブルのすべてのローを返します.すなわち、左のテーブルに存在するデータは、右のテーブルには存在せず、左のテーブルに存在するデータを返します. :
は、2つのテーブルで接続クエリーを行うと、左のテーブルに一致するレコードがなくても、右のテーブルのすべてのローを返します.左の接続とは正反対です.次にクエリーの条件文を書く必要があります.私たちはまず最初のステップで有効な注文をクエリーする必要があります.次に、2番目のステップは受信したkeywordに基づいてフィルタリングされます.ここでは最初はwhereとorWhereを混合してクエリーを行いましたが、いつもクエリーの条件が含まれていないものがあります.ここでは関連資料を調べてから分かりました.ここではkeywordでフィルタリングしたクエリーを閉パッケージに書くことで、他のwhere文と相互に影響を及ぼさないことができます.
3.ソリューション:
注意:orWhereは、パッケージを閉じずに書くと、別々のクエリー条件に書きやすくなります
$order_res = Order::leftJoin('user', 'order.user_id', '=', 'user.id')->select('order.*', 'user.title')// 。
->where('state', '=', 1) // 。
->where(function($query) use ($keyword){
// keyword 。
$query->where('order.mobile', 'like', '%'.$keyword.'%')
->orWhere('user.title', 'like', "%{
$keyword}%")// orWhere , or , 。
->orWhere('order.character_title', 'like', "%{
$keyword}%");
});