Как я могу заменить необработанный запрос в формат Laravel - PullRequest
0 голосов
/ 14 сентября 2018
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-> Images as $ 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

1 Ответ

0 голосов
/ 14 сентября 2018

Пожалуйста, проверьте эту документацию https://laravel.com/docs/5.0/eloquent#querying-relations

Согласно документации, вы можете изменить свой код следующим образом:

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

})->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...