2015-09-26 4 views
1

Я пытаюсь использовать Laravel и eloquent для получения результатов на основе следующего запроса.Выбор и заказ данных из запроса с использованием Laravel Eloquent

$blogPosts = BlogPosts::with('blog_user', 'blog_categories', 'blog_comments', 'tags') 
->orderBy('created_at', 'desc') 
->paginate(5); 

ОК, так что это нормально, он возвращает именно то, что должен, все сообщения в блоге с соответствующими отношениями к другим таблицам.

Теперь я хочу вернуть только $ blogPosts, где пользователь щелкает тегом. Итак, допустим, есть тег «PHP», поэтому я передаю это значение как тег $ методу. У меня тогда есть что-то вроде этого.

public function tag_search($tag) 
{ 

    $blogPosts = BlogPosts::with('blog_user', 'blog_categories', 'blog_comments', 'tags') 
     ->where('tags', $tag) 
     ->orderBy('created_at', 'desc') 
     ->paginate(5); 

    $categories = BlogCategories::with('blog_posts')->get(); 

    $data = array('blogPosts' => $blogPosts, 'categories' => $categories, 
       ); 
    return view('blog.index')->with($data); 
} 

Теперь мой вопрос на самом деле довольно просто я думаю, если где пункт был столбец в таблице было бы · блоги, · работать, я знаю это, потому что я пробовал.

Однако вышеуказанное не будет работать как есть, я могу использовать;

->where('x', y) 

Место, где x - поле в таблице BlogPosts. Я хочу вернуть набор значений, где представленный тег $ те же, что и теги, прикрепленные к сообщениям в блоге.

Имеют смысл? Я думаю, что я над думая, что это точку, я просто не думаю сейчас :)

+0

Я не понимаю этого: где отправленный тег $ те же, что и теги, прикрепленные к сообщениям в блоге. где проблема? У вас может быть таблица с столбцом с именем PHP, и если в ячейке в строке есть ДА, то вы просто делаете запрос -> где ('php', '=', 'yes' – patricio

+0

Хорошо, но в мой пример выше, используя -> где («теги», $ тег), он не распознает «теги» как допустимый столбец, возвращающий теги Неизвестного столбца в разделе «where». Я подозреваю, что теги прикреплены внутри части «с» поэтому он будет работать нормально, если я поместил имя столбца в оператор where, который находится в таблице BlogPosts. – Holo

+0

, конечно, если вы используете предложение where, вам нужно иметь поле в таблице под этим именем. – patricio

ответ

1

Добавить «метки» поле столбца в таблицу, а затем эти запросы:

$blogPosts = BlogPosts::with('blog_user', 'blog_categories', 'blog_comments', 'tags') 
     ->where('tags', '=', $tag) 
     ->orderBy('created_at', 'desc') 
     ->paginate(5); 

    $categories = BlogCategories::with('blog_posts')->get(); 
    return view('blog.index', compact ('categories', 'blogposts')); 
+0

Спасибо, я не могу просто добавить его в table, таблица тэгов просто держит e, между ними есть сводная таблица. – Holo

0

ИТАК ответ был использовать Вот так.

Это возвращает поиск по связанным элементам.

Смежные вопросы