Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Здравствуйте!
Задача такая. Есть три таблицы, post, category, category_post. Соответственно в category_post (id_category, id_post) записываются id постов и категорий к этим постам. Нужно вывести схожие по категориям посты, уникальные. То есть, заходя на сайте на страницу записи, я хочу видеть посты из тех же категорий что и сам пост на котором нахожусь, но чтоб они не повторялись. Какие есть решения?
Не в сети
Хотелось бы увидеть как это делается через eloquent. Я в этом новичок, буду благодарен за ответ.
Не в сети
У меня нет под рукой подходящей базы, поэтому пишу не попробовав вживую:
$thisPostTagIds = $thisPost->tags->pluck('id');
$posts = Post::whereHas('tags', function($q) use($thisPostTagIds) {
$q->whereIn('id', $thisPostTagIds);
})->where('id', '<>', $thisPost->id)
->get();
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Здравствуйте!
Подскажите почему не работает выборка данных для связи многие ко многим.
Есть турниры, модель Tournament, и игроки, модель User.
Модели друг с другом связаны.
public function users(){
return $this->belongsToMany('App\User')->withPivot('tournament_id', 'user_id')->withTimestamps();
}
public function tournaments(){
return $this->belongsToMany('App\Tournament')->withPivot('tournament_id', 'user_id')->withTimestamps();
}
Я хочу получить только турниры, у которых статус = 1 и на которые записался пользователь.
Для этого использую нетерпеливую загрузку и ограничения нетерпеливой загрузки, как описано здесь - Нетерпеливая загрузка
В контроллере указано.
$viewerId = Auth::id();
$tournamentsForShow = Tournament::whereStatus(1)->with(['users' => function ($query){
$query->where('user_id', '=', '$viewerId');
}])->get();
foreach ($tournamentsForShow as $tournament) {
echo $tournament->pivot->user_id;
}
получаю ошибку - Trying to get property 'user_id' of non-object
Не в сети
Этот запрос выводит турниры со статусом 1, на которые записался пользователь.
$userRegisteredTo = Tournament::whereHas('users', function($query){
$query->where('user_id', Auth::id());
})->where('status', '1')->get();
Можно ли это считать жадной загрузкой?
Не в сети