【问题标题】:How can I replace raw query to laravel format如何将原始查询替换为 laravel 格式
【发布时间】:2018-09-14 11:06:29
【问题描述】:
DB::select("SELECT products.* ,categories.* FROM products 
INNER JOIN category_products ON category_products.product_id = products.id
INNER JOIN categories ON category_products.category_id = categories.id 
WHERE categories.slug='$slug'")

此行查询工作正常,但我无法访问它们的关系

$product->Categories->first()->name

@foreach($product->图像为 $image)

我的产品型号如下:

class Product extends Model
{
    public function Category(){
        return $this->hasMany(CategoryProduct::class);
    }
    public function getCategory($id){
       return Category::find($id)->name;
    }
    public function Images(){
       return $this->hasMany(Image::class);
    }

    public function Categories()
    {
        return $this->belongsToMany(Category::class, 'category_products');
    }
}

那么如何将我的代码转换为 Laravel eloquent

【问题讨论】:

标签: php mysql laravel laravel-5 eloquent


【解决方案1】:

请查看此文档 https://laravel.com/docs/5.0/eloquent#querying-relations

根据文档,您可以像这样更改代码:

$products= Product::whereHas('Categories', function($q) use ($slug)
{
    $q->where('slug', $slug);

})->get();

【讨论】:

    猜你喜欢
    • 2018-01-04
    • 2017-10-21
    • 2015-06-26
    • 2019-04-29
    • 2019-02-03
    • 2023-01-14
    • 2021-09-11
    • 1970-01-01
    • 2016-09-14
    相关资源
    最近更新 更多