phpのlavarelフレームワークにおけるjoinとorWhereの使い方


1.前景問題要点:
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}%");
});