我想使用它的主键从表中获取数据到另一个表。
products_table:
id name type_id date_added
1 item1 2 1234
2 item2 2 5678
3 item3 1 0000
product_type_table:
id type_name
1 type1
2 type2
3 type3
我使用此代码查询第一个表:
Products::select('name','type_id')->where('id',$id)->get()
现在,如何使用products_table中的type_id从product_type_table自动获取type_name?
答案 0 :(得分:0)
正如Jack Skeletron指出的那样,Laravel文档有examples for joining 2 or multiple tables。
在你的情况下
$products = DB::table('products_table')
->join('product_type_table', 'products_table.type_id', '=', 'product_type_table.type_id')
->select('products_table.name, products_table.type_id')
->where('id', $id)
->get();
答案 1 :(得分:0)
你可以使用左连接。
DB::table('product_type_table')
->leftJoin('products_table', 'product_type_table.id', '=', 'products_table.type_id ')->where('product_type_table.id',$id)
->get();
答案 2 :(得分:0)
在产品型号中添加以下用于连接2个表的代码:
use App\Models\ProductType;
public function type()
{
return $this->belongsTo(ProductType::class);
}
并更改行:
Products::select('name','type_id')->where('id',$id)->get()
到
Products::select('name','type_id')->with(['type' => function($q){
return $q->select('type_name');
}])->where('id',$id)->get()
希望这适合你。