Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Друзья подскажите пжлста, час читаю доку, не догоню. Есть таблица 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)
Подскажите что не так и как надо.
$articles = Article::with('category')->get();
foreach($articles as $article)
{
$article->title;
$article->text;
$article->category->name;
}
$articles = Article::with('category')->get();
foreach($articles as $article) { $article->title; $article->text; $article->category->name; }
Вы топик читали ?
А вы доки читали?
Если не понятно, то я исправил вашу основную ошибку. Теперь можете насаживать туда условия. Как это сделать указано здесь 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
Неужели на всем форуме никто не понимает/не знает как сделать то что я написал ?
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, поэтому на ней нельзя больше делать каких-либо уточнений запроса.
Не в сети
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.
Article::with('category')->join('categories as category', 'category.id', '=', 'articles.category_id')->orderBy('category.name', 'asc')->get();
Article::with('category')->join('categories as category', 'category.id', '=', 'articles.category_id')->orderBy('category.name', 'asc')->get();
Спасибо, до этого варианта я вчера дошел сам