Доброго времени суток, столкнулся со следующей проблемой - разрабатывал сайт на Laravel. Есть таблица товаров, к товару пользователь может сделать обзор, после чего админ утверждает обзор (в таблице обзора поле 'is_approved' становится равно 1, по умолчанию 0). В БД использую tinyint для поля 'is_approved'. Чтобы получить все утвержденные обзоры использую след код: $this->reviews->where('is_approved', 1);
где reviews - связь между таблицей товаров и обзоров (один ко многим)
Развернул сайт на сервере, код работает только если писать так: $this->reviews->where('is_approved', '1');
При этом след код, как работает локально, так и на сервере: $reviews->where('is_approved', 1);
В чем может быть проблема? Версии php на локальной машине и на сервере одинаковые.
hakkol: должен быть еще id поле. Это primary key для таблицы, иначе связь не будет работать у вас. У вас идет связь один ко многим, а не многие ко многим.
структура таблицы reviews - id, user_id (id юзера, который написал обзор), juice_id (id товара, к которому написан обзор) + поля с описанием и тот самый is_approve. Вроде все правильно или я вас не понимаю?
hakkol: Да, все правильно. Тогда нужно делать дамп того, что находится в $user->reviews->all(); Посмотрите, есть ли в этой коллекции у элементов поле is_approved, если да, то сделайте её дамп и посмотрите тип данных, например, так var_dump($user->reviews->first()->is_approved); или dd($user->reviews->first()->is_approved);
$user->reviews->all() - все правильно находит, все коллекции, var_dump($user->reviews->first()->is_approved - поле видит и вывод правильную информацию, но я это давно уже заметил, что на локальной машине выводится скажем - 1, на сервере - "1"
hakkol: hakkol: на сервере вам нужно установить родной php драйвер mysql . Пример для php версии 5.* - sudo apt-get install php5-mysqlnd , затем sudo service mysql stop и sudo service mysql start; Это должно помочь...