Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Есть таблица posts с полями [id, title, description, text]. Нужно вывести все записи с первыми 3-мя полями. Как можно реализовать используя ORM, а не чистый запрос к БД?
Массив $hidden действует глобально как я понимаю, а мне нужно в рамках одного запроса.
Не в сети
Можно же просто не выводить. Или дампится целиком? Попробуй ->select('id','title','description')
Не в сети
Можно и не выводить, но не хочу большие тексты запрашивать из базы.
User::find(1)->posts->select('id','title','description')->toArray(); - ошибка, метод не найден
Это метод для прямых выборок из базы.
Изменено Nogard7491 (11.02.2016 23:59:06)
Не в сети
->get()->toArray()
Не в сети
На коллекциях нет метода select().
Так как обращение к постам через magic property posts - то возвращается коллекция. Если обратиться как к методу posts() - то вернется query builder, можно будет уточнять запрос, но в конце надо сделать get() - иначе это останется запросом.
Это все в документации есть, азы
Не в сети
Спасибо, вот правильный запрос User::find(1)->select('id','title','description')->get()->toArray()
Не в сети
А вот так не работает
User::find(1)->posts->select('id','title','description')->get()->toArray()
/** Записи пользователя */
public function posts()
{
return $this->hasMany('App\Models\Post');
}
Не в сети
А вот так не работает
User::find(1)->posts->select('id','title','description')->get()->toArray()
Тебе ж выше написали
На коллекциях нет метода select().
Так как обращение к постам через magic property posts - то возвращается коллекция. Если обратиться как к методу posts() - то вернется query builder, можно будет уточнять запрос, но в конце надо сделать get() - иначе это останется запросом.
Это все в документации есть, азы
Т.е. :
User::find(1)->posts()->select('id','title','description')->get();
Не в сети
спасибо, был не внимателен к деталям
Изменено Nogard7491 (12.02.2016 14:48:54)
Не в сети
Если они не нужны, то чтобы не городить в каждом запросе селекты, то можно скрыть в классе модели свойство hidden или отобразить - visible
как пример: https://laravel.ru/docs/v5/eloquent#преобразование-8
If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.
Не в сети
Страницы 1