【问题标题】:Inner join in Laravel EloquentLaravel Eloquent 的内部连接
【发布时间】:2018-02-01 00:26:04
【问题描述】:

我有一个有效的查询,但想知道是否有更优雅的方式来做。我有一个 Product 表和一个 Manufacturer 表。

关系如下:

Manufacturer > hasMany > Product
Product > belongsTo > Manufacturer

我的查询是:

$products = \App\Product::join('manufacturers', 
        'products.manufacturer_id', '=', 'manufacturers.id')
    ->where('manufacturers.name', 'like', $needle)
    ->orWhere('products.name', 'like', $needle);

这是对的吗?有没有更好的办法?也许不用在 Eloquent 模型中使用 join

谢谢。

【问题讨论】:

    标签: php laravel orm eloquent


    【解决方案1】:

    在您的 Product 模型中创建关系:

    public function manufacturer()
    {
        return $this->belongsTo(Manufacturer::class, 'foreign_key');
    }
    

    然后你就可以使用了

    $products = \App\Product::whereHas('manufacturer', function ($query) use ($needle) {
        $query->where('name', 'like', $needle);
    })->orWhere('name', 'like', $needle);
    

    【讨论】:

    • 您忘记关闭针头了。
    猜你喜欢
    • 2014-01-10
    • 2020-04-26
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2023-03-07
    • 2015-08-19
    相关资源
    最近更新 更多