Laravel по-русски

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

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

#1 16.10.2014 21:53:56

Данила

Получение и сортировка данных по полю из связанной таблицы

Друзья подскажите пжлста, час читаю доку, не догоню. Есть таблица Articles(id,text, category_id), есть таблица Categories(id,name). Связь belongsTo прописал в методе -category-.
Необходимо отобразиться статьи в табличном виде для редактирования с пагинацией и сортировкой по категориям, вот мои не работающие запросы для получения модели.
Articles::paginate(10)->category()->orderBy('name', Input::get('direction', 'desc'))
Articles::all()->category()->orderBy('name', Input::get('direction', 'desc'))->paginate(10)
Подскажите что не так и как надо.

#2 16.10.2014 22:48:46

Wide

Re: Получение и сортировка данных по полю из связанной таблицы

$articles = Article::with('category')->get();
foreach($articles as $article)
{
	$article->title;
	$article->text;
	$article->category->name;
}

#3 16.10.2014 22:54:27

Данила

Re: Получение и сортировка данных по полю из связанной таблицы

Wide пишет:
$articles = Article::with('category')->get();
foreach($articles as $article)
{
	$article->title;
	$article->text;
	$article->category->name;
}

Вы топик читали ?

#4 16.10.2014 23:00:03

Wide

Re: Получение и сортировка данных по полю из связанной таблицы

А вы доки читали?

#5 16.10.2014 23:18:59

Wide

Re: Получение и сортировка данных по полю из связанной таблицы

Если не понятно, то я исправил вашу основную ошибку. Теперь можете насаживать туда условия. Как это сделать указано здесь http://laravel.com/docs/4.2/eloquent#eager-loading. Тут вот http://laravel.com/docs/4.2/eloquent#query-scopes тоже есть кое что полезное и вот здесь можно интересное найти http://laravel.com/docs/4.2/eloquent#querying-relations

#6 18.10.2014 12:05:19

Данила

Re: Получение и сортировка данных по полю из связанной таблицы

Неужели на всем форуме никто не понимает/не знает как сделать то что я написал ?

#7 18.10.2014 13:22:50

Re: Получение и сортировка данных по полю из связанной таблицы

Article::with('category')->orderBy('category')->paginate(10)->get();

.

Articles::paginate(10)->category()->orderBy('name', Input::get('direction', 'desc'))

Здесь ошибка в том, что category - это метод уже готовой (выбранной из базы/созданной) модели, а не запроса (где вызываются paginate, orderBy и пр.).

Articles::all()->category()->orderBy('name', Input::get('direction', 'desc'))->paginate(10)

А здесь - в том, что all - это метод, аналогичный SELECT * FROM articles, то есть возвращает все строки в таблице в виде моделей. Результат вызова - Collection, а не Query, поэтому на ней нельзя больше делать каких-либо уточнений запроса.

Не в сети

#8 22.10.2014 21:03:00

Данила

Re: Получение и сортировка данных по полю из связанной таблицы

Proger_XP пишет:
Article::with('category')->orderBy('category')->paginate(10)->get();

.

Articles::paginate(10)->category()->orderBy('name', Input::get('direction', 'desc'))

Здесь ошибка в том, что category - это метод уже готовой (выбранной из базы/созданной) модели, а не запроса (где вызываются paginate, orderBy и пр.).

Articles::all()->category()->orderBy('name', Input::get('direction', 'desc'))->paginate(10)

А здесь - в том, что all - это метод, аналогичный SELECT * FROM articles, то есть возвращает все строки в таблице в виде моделей. Результат вызова - Collection, а не Query, поэтому на ней нельзя больше делать каких-либо уточнений запроса.

Не работает, пишет колонка не найдена в orderBy.

#9 22.10.2014 22:40:54

Wide

Re: Получение и сортировка данных по полю из связанной таблицы

Article::with('category')->join('categories as category', 'category.id', '=', 'articles.category_id')->orderBy('category.name', 'asc')->get();

#10 23.10.2014 09:14:25

Данила

Re: Получение и сортировка данных по полю из связанной таблицы

Wide пишет:

Article::with('category')->join('categories as category', 'category.id', '=', 'articles.category_id')->orderBy('category.name', 'asc')->get();

Спасибо, до этого варианта я вчера дошел сам

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