Здравствуйте, у меня есть база данных, в которой есть 2 таблицы, одна из них - categoryTable и userMenuTable, в этой категории в настоящее время есть два столбца, categoryId и categoryTitle
в настоящее время он содержит 2 строки данных: categoryId = 1 и 2 и categoryTitles = News и Blog в userMenuTable Я веду запись о том, какие категории выбрал пользователь, таблица имеет 3 столбца, menuEntryId , categoryId и cookieId , эта таблица хранит запись о том, какая cookie имеет выбранную категорию, идентификатор для выполнения этих запросов,
Первый запрос, получает пользователей выбранных категорий
function getMenu($cookieId) {
$this->db->select('*');
$this->db->from('categoryTable');
$this->db->join('userMenuTable', 'categoryTable.categoryId = userMenuTable.categoryId', 'left');
$this->db->where('userMenuTable.cookieId', $cookieId);
$query = $this->db->get();
return $query->result_array();
}
Следующий запрос получает все категории, которым не назначен cookieId,
function getAllMenus($cookieId) {
$sql ="SELECT categoryTable.categoryTitle, categoryTable.categoryId, userMenuTable.cookieId, userMenuTable.menuEntryId, categoryTable.categoryOnline,
categoryTable.categoryIsSpecial, categoryTable.categoryDateCreated, categoryTable.categorySlug, categoryTable.dashboardUserId, categoryTable.categoryAbstract
FROM categoryTable LEFT JOIN userMenuTable
ON categoryTable.categoryId = userMenuTable.categoryId
UNION ALL
SELECT categoryTable.categoryTitle, categoryTable.categoryId, userMenuTable.cookieId, userMenuTable.menuEntryId, categoryTable.categoryOnline,
categoryTable.categoryIsSpecial, categoryTable.categoryDateCreated, categoryTable.categorySlug, categoryTable.dashboardUserId, categoryTable.categoryAbstract FROM categoryTable RIGHT JOIN userMenuTable
ON categoryTable.categoryId = userMenuTable.categoryId
WHERE userMenuTable.cookieId = NULL";
$ query = $ this-> db-> query ($ sql);
return $ query-> result_array ();
}
однако это возвращает массив, который выглядит так,
[0] => Array
(
[categoryId] => 1
[categoryTitle] => blog
[categoryAbstract] => <p>asdsdsadasdsadfdsgdgdsgdsgssssssssssss</p>
[categorySlug] => blog
[categoryIsSpecial] => 0
[categoryOnline] => 1
[categoryDateCreated] => 1265123745
[dashboardUserId] => 0
[menuEntryId] => 5
[cookieId] => bang4b696152b4869
)
[1] => Array
(
[categoryId] => 8
[categoryTitle] => News
[categoryAbstract] => <p>The world at Bang Marketing moves fast, keep up to date w
[categorySlug] => news
[categoryIsSpecial] => 0
[categoryOnline] => 1
[categoryDateCreated] => 1265283717
[dashboardUserId] => 0
[menuEntryId] => 6
[cookieId] => bang4b696152b4869
)
[2] => Array
(
[categoryTitle] => blog
[categoryId] => 1
[cookieId] => bang4b696152b4869
[menuEntryId] => 5
[categoryOnline] => 1
[categoryIsSpecial] => 0
[categoryDateCreated] => 1265123745
[categorySlug] => blog
[dashboardUserId] => 0
[categoryAbstract] => <p>asdsdsadasdsadfdsgdgdsgdsgssssssssssss</p>
)
[3] => Array
(
[categoryTitle] => News
[categoryId] => 8
[cookieId] => bang4b696152b4869
[menuEntryId] => 6
[categoryOnline] => 1
[categoryIsSpecial] => 0
[categoryDateCreated] => 1265283717
[categorySlug] => news
[dashboardUserId] => 0
[categoryAbstract] => <p>The world at Bang Marketing moves fast, keep up to date w
)
)
Каким-то образом мне нужно создать запрос, который возвращает все категории, которые находятся в categoryTable , и проверяет, совпадает ли его там с идентификатором, который находится в userMenuTable , где cookieId совпадает с идентификатором пользователей, а затем возвращает массив, чтобы я мог перебрать его таким образом,
if(isset($mainMenu)) {
//die(print_r($mainMenu));
foreach ($mainMenu as $k => $v) {
if($v['menuEntryId'] == '') {
echo "<li class='menuItem'>
<a href='".base_url()."welcome/getContent/$v[categoryId]' class='navLink' id='$v[categoryTitle]'>".$v['categoryTitle']."</a>
</li>";
} else {
echo "<li class='menuItem'>
<a href='".base_url()."welcome/getContent/$v[categoryId]' class='saved navLink' id='$v[categoryTitle]'>".$v['categoryTitle']."</a>
</li>";
}
}
} else {
// do something else
//echo "here";
}