如何从Laravel中的两个表联接并获取数据?

时间:2019-09-02 11:15:28

标签: php laravel

我正在做一个laravel项目。 我有两个桌子:公司,产品
每个公司都有很多产品。我想显示公司名称和徽标以及产品详细信息。

class Company extends Model
{

// 
    public function products()
    {
        return $this->hasMany('System\Product','company_id');
    }
}

...........
    class Product extends Model
{
   public function company()
    {
      return $this->belongsTo('Systems\Company','id'); 
        }
}

..........

company_table
id   company_name  company_logo
 1       MDE        image.png
procut_table
id  product_name  price  company_id
1     7-up         200      1

我要如何分散它?

我想这样显示它:

Product_name
price
company_name
company_logo

如何在laravel中写一个查询给我这个结果? ......

3 个答案:

答案 0 :(得分:0)

您需要使用join,可以使用以下查询

$result = DB::table('Product')->join('Company', 'Product.company_id', '=', 'Company.id')->get();

获得结果

答案 1 :(得分:0)

您可以要求您的产品并加载其关系company

$products = Product::with('company')->get();

然后您可以访问每种产品的公司

@foreach($products as $product)
    {{$product->name}}<br/>
    {{$product->price}}<br/>
    {{$product->company->name}}<br/>
    {{$product->company->logo}}<br/>
@endforeach

答案 2 :(得分:0)

    class Company extends Model
    {

        public function products()
        {
            return $this->hasMany('System\Product','company_id','id');
        }
    }


    class Product extends Model
    {
       public function company()
        {
          return $this->belongsTo('Systems\Company','company_id','id'); 
            }
    }

在您的控制器中,您可以像这样。

$products = Product::with('company')->get();

    foreach ($products as $product) {
       echo $product->company->name; //MDE
       echo $product->company->company_logo; //image.png
       echo $product->price; //200

    }