Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Все! Проблема решена. Спасибо вам, Proger_XP. Результаты у меня повторялись, так как я просматривал var_dump’ом, то, что получил и еще забыл <pre> дорисовать, а там каждая модель имеет два разных свойства, в которых значения одинаковые.
Потратив еще некоторое количество времени на изучение Eloquent API я пришел к вот такому коду:
Немного прокомментирую его, возможно кому-то пригодится)
public function searchPost()
{
$request = Input::get('search');
$searchTerms = explode(',', $request);
foreach ($searchTerms as $i => $term)
{
$searchTerms[$i] = trim($term);
}
$searchTerms = array_unique($searchTerms);//Здесь я уже имею массив с уникальными значениями
$posts = null;
foreach ($searchTerms as $i => $term)
{
if($i == 0)
{
//Использую Eloquent вместо QueryBuilder, потому что выводить надо автора и категорию(relationships)
$posts = Post::where('full_article', 'LIKE', "%{$term}%")
->orWhere('short_article', 'like', "%{$term}%")
->orWhere('title', 'like', "%{$term}%");
continue; //Для первого ключевого слова значение переменной присваивается, а для остальных запрос составляется далее
}
$posts = $posts->orWhere('full_article', 'LIKE', "%{$term}%")
->orWhere('short_article', 'like', "%{$term}%")
->orWhere('title', 'like', "%{$term}%");
/*Этот запрос вернет уникальную Eloquent коллекцию (Советую почитать о том, что такое Eloquent коллекция, потому как надо будет понимать почему вылазят ошибки запросов к БД и как их исправить). Что это значит? Допустим в базе есть две статьи:
1) Привет, Вася!
2) Привет, Петя и Вася!
Когда поисковый запрос будет таким: Вася, Привет - он подойдет как к первой статье, так и ко второй и причем
каждое ключевое слово "Вася" и "Привет" подходит к обеим статьям. Можно предположить, что на вывод пойдет 4
статьи, то есть две статьи по два раза каждая, но как я написал выше, это возвратит уникальную коллекцию елементов.
Знайте это, когда будете составлять похожие запросы, либо делать поиск, потому что найти решение этой проблемы
заняло у меня немало нервов и времени.
}
return View::make('blog.posts.search-posts')
->with('posts', $posts->paginate(1));
}
Доброго времени суток! Возникла проблема сделать поиск на сайт. Начал делать, но столкнулся с проблемой, а именно при выборке из БД мне возвращается объект типа Collection, но результаты в нём повторяются.
Ниже приведу код екшена поиска:
.
public function searchPost()
{
$request = Input::get('search');
$searchTerms = explode(',', $request);
foreach ($searchTerms as $term)
{
$term = trim($term);
if($searchTerms[0] == $term)
{
$posts = Post::where('full_article', 'LIKE', "%{$term}%")
->orWhere('short_article', 'like', "%{$term}%")
->orWhere('title', 'like', "%{$term}%")->first();
continue;
}
$posts->merge(Post::where('full_article', 'LIKE', "%{$term}%")
->orWhere('short_article', 'like', "%{$term}%")
->orWhere('title', 'like', "%{$term}%")->get());
}
header('Content-Type: text/html; charset=utf-8');
var_dump($posts);
return View::make('blog.posts.search-posts')
->with('posts', $posts->paginate(1));
}
Заранее благодарен.
Здравствуйте! Помогите пожалуйста решить такую проблему. На сайте есть таблица категорий и таблица пользователей. Задача: сделать права на объекты, то есть администратор выбирает пользователей, которые будут редактировать ту или иную категорию. Создал таблицу "categories_users", в которой поля "category_id" и "user_id". В моделях прописал по методу belongsToMany("Имя модели", "таблица связей"). Создал конфиг для Frozennode и в нем в edit_fields указал соответствующие методы. Когда жму добавить/редактировать пользователя, то все это дело не сохраняется почему-то. Если кто-то сталкивался с этой проблемой, буду рад помощи. Или как вариант, можно ли как-то посмотреть запрос, который отправляется серверу БД. Заранее благодарен.
Страницы 1