Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 02.12.2015 13:49:09

Jiroler

Связь много ко многим. Построение запроса

Таблицы:

categories
--id

materials
--id

category_material
--id
--category_id
--material_id

Модели:

class Material extends Model {
    public function category(){
        return $this->belongsToMany('App\Category');
    }
}

class Category extends Model {
    public function material(){
        return $this->belongsToMany('App\Material');
    }
}

Мне нужны все материалы, у которых в таблице-связи "category_id = 1"

Пробую:

$category_id = '1';
$materials = Material::with('categories')->where('category_id', $category_id)->get();
//Unknown column 'materials.category_id'
$category_id = '1';
$materials = Material::with(['category' => function($query) use ($category_id){
    $query->where('category_id', $category_id);
}])->get();
//Column 'category_id' in where clause is ambiguous ...

Помогите пожалуйста

#2 02.12.2015 22:54:39

zpnick

Re: Связь много ко многим. Построение запроса

С чего так в with() вцепился не пойму, он тут не в тему, если уж такой путь выбрал, то делай через whereHas().
Если нормально, то:
$categories = Category::find(1)->material; или $categories = Category::find(1)->material()->get();

Желательно в моделях названия поменять, поставить множественные значения (как названия таблиц), всё таки связь многие ко многим.

Подвал раздела