laravel连接三个表
laravel join three tables
我有如下三个表:
invent_accessory
编号、代码、详细信息,is_length
invent_price_accessory
id,invent_accessory_id_fk,价格,颜色
invent_price_accessory_length
id,invent_accessory_id_fk,价格,颜色
我如何组合这三个表以便我可以获得 id,code,detal,is_length,price,color
我已完成以下操作,但没有 return 任何数据:
public function getAccessoryInventPrice(){
$accessory=DB::table('invent_accessory')
->select('invent_accessory.id as accessory_id')
->join('invent_price_accessory','invent_price_accessory.invent_accessory_id_fk','=','invent_accessory.id')
->join('invent_price_accessory_length','invent_price_accessory_length.invent_accessory_id_fk','=','invent_accessory.id')
->get();
return $accessory;
}
我猜我必须先在 invent_price_accessory 和 invent_price_accessory_length 之间做 Union 然后加入invent_accessory?我该怎么做呢?请帮助。
我猜对了!!我能够通过以下方式解决这个问题:
public function getAccessoryInventPrice(){
$data1=\DB::table('invent_price_accessory')->select('accessory_code_id','color_id','rate');
$data2=\DB::table('invent_price_acc_length')->select('accessory_code_id','color_id','rate')
->union($data1);
$query= \DB::table(\DB::raw("({$data2->toSql()}) as invent_price"))
->join('invent_accessory','invent_price.accessory_code_id','=','invent_accessory.id')
->join('invent_color','invent_price.color_id','=','invent_color.id')
->select('invent_accessory.id','code','sl_detail','is_length','rate','invent_color.name')
->orderBy('invent_accessory.id','asc')
->get();
return $query;
}
我有如下三个表:
invent_accessory 编号、代码、详细信息,is_length
invent_price_accessory id,invent_accessory_id_fk,价格,颜色
invent_price_accessory_length id,invent_accessory_id_fk,价格,颜色
我如何组合这三个表以便我可以获得 id,code,detal,is_length,price,color
我已完成以下操作,但没有 return 任何数据:
public function getAccessoryInventPrice(){
$accessory=DB::table('invent_accessory')
->select('invent_accessory.id as accessory_id')
->join('invent_price_accessory','invent_price_accessory.invent_accessory_id_fk','=','invent_accessory.id')
->join('invent_price_accessory_length','invent_price_accessory_length.invent_accessory_id_fk','=','invent_accessory.id')
->get();
return $accessory;
}
我猜我必须先在 invent_price_accessory 和 invent_price_accessory_length 之间做 Union 然后加入invent_accessory?我该怎么做呢?请帮助。
我猜对了!!我能够通过以下方式解决这个问题:
public function getAccessoryInventPrice(){
$data1=\DB::table('invent_price_accessory')->select('accessory_code_id','color_id','rate');
$data2=\DB::table('invent_price_acc_length')->select('accessory_code_id','color_id','rate')
->union($data1);
$query= \DB::table(\DB::raw("({$data2->toSql()}) as invent_price"))
->join('invent_accessory','invent_price.accessory_code_id','=','invent_accessory.id')
->join('invent_color','invent_price.color_id','=','invent_color.id')
->select('invent_accessory.id','code','sl_detail','is_length','rate','invent_color.name')
->orderBy('invent_accessory.id','asc')
->get();
return $query;
}