2017-07-17 16 views
1

以下は私のSQL構文です、laravelで実装する方法、事前に感謝します。以下のmysqlクエリをlaravelクエリ構文に変換する方法は?

SELECT * FROM `tr_policy_privacy` AS pri 
LEFT JOIN 
(SELECT * FROM tr_policy_full_create as cri WHERE cri.client_id=156 and cri.policy_type_id = 1) 
AS hours 
ON pri.id = hours.policy_template_edit 

これまでのところ、私はこれを試しましたが、左結合の中で関数を使用する方法を見つけようとしています。

DB::table('tr_policy_privacy AS pri') 
    ->select(['cri.policy_title', 'cri.policy_type', 'cri.policy_std', 'cri.policy_version', 'cri.approved_user_id', 'cri.effective_date', 'cri.last_revised_date', 'cri.id']) 
    ->leftJoin(
     DB::raw('(
     SELECT * FROM tr_policy_full_create as pol WHERE pol.client_id=156 and pol.policy_type_id = 1 
     ) AS cri'),'pri.id', '=', 'cri.policy_template_edit' 
    ) 
    ->get(); 
+4

の先頭にlaravelで直接実行すること

$sql = " SELECT * FROM 'tr_policy_privacy' AS pri LEFT JOIN (SELECT * FROM tr_policy_full_create as cri WHERE cri.client_id=156 and cri.policy_type_id = 1) AS hours ON pri.id = hours.policy_template_edit"; $result = DB::select($sql); 

使用DBの名前空間を試してみてください? – Tajgeer

+0

お試しいただけますか?同様のトピック[like](https://laravel.com/docs/5.4/queries)を検索してみてください。 –

+0

多くの同様の質問がstackoverflowにあります。 –

答えて

0
public function show($slug) 
{ 
    $query = DB::table('wn_entries') 
    ->leftJoin('wn_criteria', 'wn_entries.id', '=', 'wn_criteria.entry_id') 
    ->leftJoin('wn_attachment_entries', 'wn_entries.id', '=', 'wn_attachment_entries.entry_id') 
    ->leftJoin('wn_team', 'wn_entries.id', '=', 'wn_team.entry_id') 
    ->leftJoin('wn_confirmation', 'wn_entries.id', '=', 'wn_confirmation.entry_id') 
    ->leftJoin('wn_users', 'wn_entries.user_id', '=', 'wn_users.id') 


    ->select(
     'wn_entries.*', 
     'wn_entries.id as main_entry_id', 
     'wn_criteria.id as criteria_entry_id', 
     'wn_criteria.*', 
     'wn_attachment_entries.id as attachment_entry_id', 
     'wn_attachment_entries.*', 
     'wn_team.id as team_entry_id', 
     'wn_team.*', 
     'wn_confirmation.id as confirmation_entry_id', 
     'wn_confirmation.*', 
     'wn_users.*' 
     ); 


    $query = $query->where('wn_entries.slug',$slug); 


     $entrydata = $query->get()->toArray(); 
    $entries = $entrydata['0']; 
    return view('entries.show', compact('entries')); 

} 

あなたは、このコードからアイデアを得ます。

+0

いいえ、私は何の考えもしませんでした。 – Crysis

+0

$クエリ= DB ::テーブル( 'のtable_1') - > leftJoin( 'table_2'、 'table_1.idを'、 '='、 'table_2.id') - 'のtable_1 *'>( を選択し、 'table_2。*' ); $ query = $ query-> where( 'table_1.name'、 'abc_name'); $ entrydata = $ query-> get() - > toArray(); –

+0

をご確認ください。このようにして、laravel –

1

あなたの生のSQLが正しい場合、あなたはこれまでに何を持っているか、クラス

use DB; 
+0

の返信のおかげでjoinクエリを作成しますが、私はleft joinの中で関数を使って方法を見つけようとしています。 – Crysis

関連する問題