Пользовательская таблица:
Код: Выделить всё
+----+---------+------------+
| id | name | level |
+----+---------+------------+
| 1 | user 1 | 1 |
| 2 | user 2 | 2 |
+----+---------+------------+
Код: Выделить всё
+----+---------+------------+
| id | user_id | name |
+----+---------+------------+
| 1 | 1 | category 1 |
| 2 | 2 | category 2 |
| 3 | 2 | category 3 |
+----+---------+------------+
Код: Выделить всё
+----+-------------+------------+
| id | category_id | name |
+----+-------------+------------+
| 1 | 1 | product 1 |
| 2 | 2 | product 2 |
| 3 | 3 | product 3 |
| 4 | 3 | product 4 |
+----+-------------+------------+
Код: Выделить всё
$id = 2;
$data = product::whereHas('category', function ($q) use ($id) {
$q->where('user_id', $id);
})->get();
Код: Выделить всё
$data->first()->category->name;
$data->first()->user->name;
И у меня есть еще один вопрос: у меня есть такой код построителя запросов:
Код: Выделить всё
$id = false;
if(auth()->user()->level != 1){
$id = auth()->user()->id;
}
$data = DB::table('product')
->select('product.*', 'category.name AS category_name', 'users.name AS user_name')
->join('category', 'category.id', '=', 'product.category_id')
->join('users', 'users.id', '=', 'category.user_id')
->when($id, function($query, $id){
return $query->where('users.id', $id);
})
->get();
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/706 ... g-eloquent