如何使用另一个表中的ID从另一个表中获取数据

时间:2018-05-14 10:26:37

标签: php laravel

我想使用它的主键从表中获取数据到另一个表。

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?

3 个答案:

答案 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()

希望这适合你。