Скажем, у меня есть мастер-таблица с именем категория , например: -
|-----------------|
| id | name |
|-----------------|
| 1 | Egg |
|-----------------|
| 2 | Meat |
|-----------------|
| 3 | Fish |
|-----------------|
И user_category таблица, подобная этой: -
|--------------------------------------|
| id | user_id | category_id |
|--------------------------------------|
| 1 | 1 | 1 |
|--------------------------------------|
| 2 | 1 | 3 |
|--------------------------------------|
Когда я выбираю на основе user_id, я хочу показать данные таким образом: -
|----------------------------------|
| id | name | is_checked |
|-----------------|----------------|
| 1 | Egg | 1 |
|-----------------|----------------|
| 2 | Meat | 0 |
|-----------------|----------------|
| 3 | Fish | 1 |
|-----------------|----------------|
Это потому, что я хочу создать панель, на которой пользователь будет видеть все категории в списке с галочкой, кроме определенных категорий, которые он сохранил.
Я пытался сделать это так: -
$categoryData = array();
$categoryList = Category::get();
foreach($categoryList as $cl)
{
$category['id'] = $cl['id'];
$category['name'] = $cl['cname'];
$isSaved = UserCategory::select('id')->where(
array('user_id'=>$user_id, 'category_id' => $cl['id'])->count();
if($isSaved > 0)
{
$category['saved'] = 1;
}
else
{
$category['saved'] = 0;
}
$categoryData[] = $category;
}
Есть ли другой способ, например, сделать все это, выполнив один запрос MySQL вместо цикла?