Laravel по-русски

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

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

#1 28.12.2014 12:04:38

Armix2000

Как вывести в запросе определенные столбцы?

$user = Phone::find(82);
когда я пишу такой код дебаггер показывает запрос SQL select * from `users` where `users`.`id` = '82' limit 1

Как записать код чтобы запрос содержал имена колонок, которые мне нужны name,sername ?
select name,sername from `users` where `users`.`id` = '82' limit 1

#2 28.12.2014 12:15:08

Armix2000

Re: Как вывести в запросе определенные столбцы?

Armix2000 пишет:

$user = Phone::find(82);
когда я пишу такой код дебаггер показывает запрос SQL select * from `users` where `users`.`id` = '82' limit 1

Как записать код чтобы запрос содержал имена колонок, которые мне нужны name,sername ?
select name,sername from `users` where `users`.`id` = '82' limit 1


Я понял как это сделать для простого запроса, передать array в find

А вот как передать нужные мне колонки в OneToMany, там тоже по умолчанию выбираются все столбцы (*) , а как задать только некоторые?

#3 29.12.2014 15:09:14

Re: Как вывести в запросе определенные столбцы?

$object->related()->select('related.column_one', 'related.column_two')->get()

Как-то так, если память не изменяет...

Не в сети

#4 29.12.2014 19:12:34

armix2000

Re: Как вывести в запросе определенные столбцы?

SMGladkovskiy пишет:
$object->related()->select('related.column_one', 'related.column_two')->get()

Как-то так, если память не изменяет...

Вопрос ставился насчет Eloquent, а это как я понимаю Query Builder

#5 29.12.2014 19:15:43

Re: Как вывести в запросе определенные столбцы?

Использование Eloquent не накладывает на Вас ограничений в использовании Query Builder'а.

Не в сети

#6 30.12.2014 12:58:04

Armix2000

Re: Как вывести в запросе определенные столбцы?

SMGladkovskiy пишет:

Использование Eloquent не накладывает на Вас ограничений в использовании Query Builder'а.

Это понятно, можно и чистый PHP код в SQL запросом вставить! Но вопрос все же про Eloquent !!!

#7 30.12.2014 13:08:56

Re: Как вывести в запросе определенные столбцы?

PHP
Phone->whereId(123)->firstOrFail(array('name''sername'));

p.s: в имени ошибка — surname

Не в сети

#8 30.12.2014 16:07:50

Armix2000

Re: Как вывести в запросе определенные столбцы?

Proger_XP пишет:

}%%%(php)
Phone->whereId(123)->firstOrFail(array('name', 'sername'));
%%

p.s: в имени ошибка - s**__u__**rname

спасибо то что нужно!
ЗЫ путаюсь я в этих схемах, привык юзать просто SQL запросы и их резалт!

#9 30.12.2014 16:19:41

Armix2000

Re: Как вывести в запросе определенные столбцы?

Proger_XP пишет:

}%%%(php)
Phone->whereId(123)->firstOrFail(array('name', 'sername'));
%%

p.s: в имени ошибка - s**__u__**rname

Хотя это немного не то что я спрашивал я имел ввиду в запросе OneToMany

select * from `users` where `users`.`id` = '82' limit 1
select * from `comments` where `comments`.`user_id` = '82'


если так записать то колонки будут в 1-м запросе, а мне нужно например колонки во втором запросе?



Пример
    $comments = User::whereId(82)->firstOrFail(array('id','name', 'email'));
    foreach ($comments->comment as $key) {
        print $key->mycomment."<br>";
    }

дает 2 запроса

select `id`, `name`, `email` from `users` where `id` = '82' limit 1
select * from `comments` where `comments`.`user_id` = '82'

#10 30.12.2014 16:36:45

Wide

Re: Как вывести в запросе определенные столбцы?

User::find(1)->comments()->get(['id', 'text'])
User::find(1)->comments()->select('id', 'text')->get()

#11 30.12.2014 17:40:43

Re: Как вывести в запросе определенные столбцы?

Armix2000 пишет:

Это понятно, можно и чистый PHP код в SQL запросом вставить! Но вопрос все же про Eloquent !!!

Eloquent в построениях  запросов наследуют query builder, а следовательно, (почти) всё, что может QB может и Eloquent. Это упрощает использование, так как по сути, Eloquent, будучи ORM движком, решает вопрос использования записей таблиц как объектов, а колонок таблиц - как свойств этих объектов, а так же вопрос отношений между объектами. В остальном (в особенности, при построении запросов) - это тот же QB, только взгляд со стороны.

Вот Вам выдержка из мануала:

Note: All methods available on the query builder are also available when querying Eloquent models.

Не думайте, что Eloquent - это серебрянная пуля. Это просто дополнительный слой абстракции, помогающий Вам быстрее писать код. Когда Вы столкнётесь с построением крупного высоконагруженного решения, вероятнее всго (при должной архитектуре), Вы будете уходить от ORM...

Изменено SMGladkovskiy (30.12.2014 17:41:12)

Не в сети

#12 31.12.2014 04:51:58

Re: Как вывести в запросе определенные столбцы?

$model=Phone::where('id','=','82')->take(1)->get();
return .........

И далее

$model->name;
$model->title;
$model->id;

Изменено Afatar (31.12.2014 05:01:33)

Не в сети

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