Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 11.02.2016 23:06:02

Исключить поля в запросе

Есть таблица posts с полями [id, title, description, text]. Нужно вывести все записи с первыми 3-мя полями. Как можно реализовать используя ORM, а не чистый запрос к БД?
Массив $hidden действует глобально как я понимаю, а мне нужно в рамках одного запроса.

Не в сети

#2 11.02.2016 23:27:41

Re: Исключить поля в запросе

Можно же просто не выводить. Или дампится целиком? Попробуй ->select('id','title','description')

Не в сети

#3 11.02.2016 23:50:33

Re: Исключить поля в запросе

Можно и не выводить, но не хочу большие тексты запрашивать из базы.
User::find(1)->posts->select('id','title','description')->toArray(); - ошибка, метод не найден
Это метод для прямых выборок из базы.

Изменено Nogard7491 (11.02.2016 23:59:06)

Не в сети

#4 12.02.2016 02:53:01

Re: Исключить поля в запросе

->get()->toArray()

Не в сети

#5 12.02.2016 03:07:33

duster
Откуда: Мельбурн
Сообщений: 148

Re: Исключить поля в запросе

На коллекциях нет метода select().

Так как обращение к постам через magic property posts - то возвращается коллекция. Если обратиться как к методу posts() - то вернется query builder, можно будет уточнять запрос, но в конце надо сделать get() - иначе это останется запросом.

Это все в документации есть, азы smile

Не в сети

#6 12.02.2016 09:24:26

Re: Исключить поля в запросе

Спасибо, вот правильный запрос User::find(1)->select('id','title','description')->get()->toArray()

Не в сети

#7 12.02.2016 09:36:04

Re: Исключить поля в запросе

А вот так не работает

User::find(1)->posts->select('id','title','description')->get()->toArray()

/** Записи пользователя */

public function posts() 
{
        return $this->hasMany('App\Models\Post');
}

Не в сети

#8 12.02.2016 10:35:49

Re: Исключить поля в запросе

А вот так не работает
User::find(1)->posts->select('id','title','description')->get()->toArray()

Тебе ж выше написали

duster пишет:

На коллекциях нет метода select().
Так как обращение к постам через magic property posts - то возвращается коллекция. Если обратиться как к методу posts() - то вернется query builder, можно будет уточнять запрос, но в конце надо сделать get() - иначе это останется запросом.
Это все в документации есть, азы smile

Т.е. :
User::find(1)->posts()->select('id','title','description')->get();

Не в сети

#9 12.02.2016 14:48:38

Re: Исключить поля в запросе

спасибо, был не внимателен к деталям

Изменено Nogard7491 (12.02.2016 14:48:54)

Не в сети

#10 12.02.2016 17:13:33

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: Исключить поля в запросе

Если они не нужны, то чтобы не городить в каждом запросе селекты, то можно скрыть в классе модели свойство 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.

Не в сети

Подвал раздела