2017-10-17 10 views
0

と同じテーブルに参加:私はMySQLでこれらのコードを試してみてください二つの異なる列laravel

SELECT  
    A.*, 
    B.name, 
    C.name 
FROM 
    eventlog_tbl as A 
    LEFT JOIN users B ON A.byuser=B.email 
    LEFT JOIN users C ON A.affectiveuser=C.email; 

私はLaravel

私はLaravelに変換することができますどのよう
return DB::table('eventlog_tbl') 
      ->leftjoin('users', 'users.email', '=', 'eventlog_tbl.byuser') 
      ->leftjoin('users', 'users.email', '=', 'eventlog_tbl.affectiveuser') 
      ->select('eventlog_tbl.*','users.name','users.name') 
      ->get(); 

でこれらを試してみてください?

+2

[ドキュメント]を読む(https://laravel.com/docs/5.5/queries):私はおそらく、関係が間違っている、このような何かを持っていますコードを投稿すると、そこから手伝ってくれます。 – fubar

+0

@fubarどのようにlaravelでこれらのmysqlスクリプトを使用できますか? –

+0

最も野蛮な方法: 'DB :: raw()' –

答えて

3

はコードの下に試してみてください。

$res = DB::table('eventlog_tbl') 
     ->leftjoin('users AS A', 'A.email', '=', 'eventlog_tbl.byuser') 
     ->leftjoin('users AS B', 'B.email', '=', 'eventlog_tbl.affectiveuser') 
     ->select('eventlog_tbl.*','A.name as byuser_name','B.name as affectiveuser_name') 
     ->get(); 

    print_r($res); 
+0

仕事だことありがとうどうもありがとうございました –

1

これはLaravelクエリビルダを使用して作成されたクエリです。

$events = DB::table('eventlog_tbl') 
    ->select('eventlog_tbl.*', 'users_1.name', 'users_2.name') 
    ->leftJoin('users AS users_1', 'users_1.email', '=', 'eventlog_tbl.byuser') 
    ->leftJoin('users AS users_2', 'users_2.email', '=', 'eventlog_tbl.affectiveuser') 
    ->get(); 

編集:

$events = DB::table('eventlog_tbl') 
    ->select('eventlog_tbl.*', 'users_1.name AS user_1', 'users_2.name AS user_2') 
    ->leftJoin('users AS users_1', 'users_1.email', '=', 'eventlog_tbl.byuser') 
    ->leftJoin('users AS users_2', 'users_2.email', '=', 'eventlog_tbl.affectiveuser') 
    ->get(); 

問題は、両方の名前の列が同じものと呼ばれているということです。受け入れられた答えに従って、これらのエイリアスを別にする必要があります。

+0

と私は私のlaravelブレードには何が新しい記述する必要がありますしていますので、あなたは私にあなたの答えを表示することができます @foreach($値として$イベント) ​​ \t {{$値 - >名}} \t \t​​ \t {{$値 - >名}} \t @endforeach –

+0

​​を取得するので、私はlaravel –

+0

は非常に –

0

あなたが関係を使用するために、これを変換しないのはなぜ?持っている、

class EventLog extends Model 
{ 
    public function byUser() 
    { 
     return $this->hasOne(User::class, 'byuser', 'id'); 
    } 

    public function affectiveUser() 
    { 
     return $this->hasOne(User::class, 'affectiveuser', 'id'); 
    } 
} 

そして

$event_log = EventLog::with(['byUser', 'affectiveUser')->all(); 


foreach ($event_log as $item) { 
    echo $item->byUser->email(); 
} 
関連する問題