Laravel по-русски

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

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

#1 30.05.2014 10:34:18

Как работать с результатом DB::select?

Добрый день. Есть вот такой код:

public function show($department_id, $course_id)
{
	$usefuls_id = DB::select('select distinct course_useful.useful_id from course_useful join department_useful on     department_useful.department_id=? and course_useful.course_id=?', array($department_id, $course_id));

	$usefuls = Useful::whereIn('id', $usefuls_id)->get();

	return View::make('courses.show')->with('usefuls', $usefuls);
}	

Нужно получить список предметов, исходя из данных массива $usefuls_id. Появляется ошибка "Object of class stdClass could not be converted to string". Как быть?

Не в сети

#2 30.05.2014 20:06:19

Re: Как работать с результатом DB::select?

Я могу ошибаться но по-моему

$usefuls = Useful::whereIn('id', $usefuls_id->toArray( ))->get();

Не проверял!

Не в сети

#3 30.05.2014 21:09:25

Re: Как работать с результатом DB::select?

flatter пишет:

Я могу ошибаться но по-моему

$usefuls = Useful::whereIn('id', $usefuls_id->toArray( ))->get();

Не проверял!

К сожалению это не так "Call to a member function toArray() on a non-object".

Не в сети

#4 30.05.2014 21:17:17

Re: Как работать с результатом DB::select?

Еще:

DB::select(...)->get()

Не в сети

#5 30.05.2014 21:19:18

Re: Как работать с результатом DB::select?

У вас в  $usefuls_id должна быть или коллекция или массив.

Не в сети

#6 30.05.2014 21:57:04

Re: Как работать с результатом DB::select?

flatter пишет:

У вас в  $usefuls_id должна быть или коллекция или массив.

Да, это я понимаю, но вот как это сделать smile Методы get() и toArray() невозможно использовать.

Не в сети

#7 30.05.2014 22:58:32

Re: Как работать с результатом DB::select?

Напишите откуда берется $usefuls_id я не совсем понимаю что вы там хотите сделать.

Не в сети

#8 30.05.2014 23:08:25

Re: Как работать с результатом DB::select?

flatter пишет:

Напишите откуда берется $usefuls_id я не совсем понимаю что вы там хотите сделать.

Собственно у меня есть две таблицы: course_useful и department_useful. Я хочу вытащить оттуда те useful_id, которые соответствуют определенным course_id и department_id. Нужно сделать так, чтобы в этой переменной содержались id, которые я смогу передать сюда

$usefuls = Useful::whereIn('id', $usefuls_id)->get();

чтобы получить объекты Useful и передать их в представление. Но как видите приведенный выше код ругается "Object of class stdClass could not be converted to string". Вот такой код работает

$usefuls = Useful::whereIn('id', array($usefuls_id[0]->useful_id, $usefuls_id[1]->useful_id))->get();

Короче нужно сделать так, чтобы заработал вот этот фрагмент

$usefuls = Useful::whereIn('id', $usefuls_id)->get();

Не в сети

#9 30.05.2014 23:30:18

Re: Как работать с результатом DB::select?

Работает вот такой вариант:

foreach ($usefuls_id as $key => $value)
{
     $q[$value->useful_id] = $value->useful_id;
}	

$usefuls = Useful::whereIn('id', $q)->get();

Если кто-то знает, как можно сделать лучше, то напишите пожалуйста smile

Не в сети

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