2017-12-13 4 views
1

2つの列を一致させようとしましたが、IDに基づいて一致していれば、一致する列にユーザー名を割り当てます。しかし、内部結合私は作ることができない条件の場合は、テーブルを結合する。私のJSONで内部で条件を作成してlaravelで詳細を取得する

$list = DB::table('job') 
     ->join('users', 'users.id', '=', 'job.created_by') 
     ->select('job.*','users.first_name as created_by','users.first_name') 
     ->where('job.enterprise_id', $user->id) 
     ->get(); 

iが値1つの値のupdated_byは、それが私が= FIRST_NAMEさもなければupdated_by = NULLをupdated_by表示する一致した場合、私はID列と一致することを意味していました。

+0

あなたの必要性の生のクエリを作成し、私たちはそれを –

+0

に変換します。私は既にそれを試したことがありませんでした。 –

答えて

1

ジョブを更新したユーザーの名前を表示するには、ユーザーに左結合テーブルを使用できます。ジョブは、ジョブがあなたがu2.first_nameに対してNULL値を持つことになります更新されていない場合は、そのジョブを更新したユーザーの名前を返しますu2.first_nameを更新した場合

$list = DB::table('job as j') 
     ->join('users as u1', 'u1.id', '=', 'j.created_by') 
     ->leftJoin('users as u2', 'j.updated_by' , '=', 'u2.id') 
     ->select('j.*','u1.first_name as created_by','u2.first_name as updated_by') 
     ->where('j.enterprise_id', $user->id) 
     ->get(); 

。また、私はあなたの仕事テーブルは、この情報を格納するupdated_byという名前の列があると仮定します。

+0

はうまく働いています。 –

+0

私は1つの列の中に1つの小さな疑いの男を持っていた - created_at = 2017-07-17 20:47:02これのようなしかし、私は日付のみを表示する必要があります –

+0

@SivarajuManiそれはあなたがアプリケーションコードで日時の値をフォーマットし、良い考えではありません、あなたは 'Carbon'やPHPの日時のようなヘルパークラスを使います –

関連する問題