Laravel Получить данные Один ко многим Отношение с условиями - PullRequest
0 голосов
/ 09 сентября 2018

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

У меня есть запись в блоге, в которой есть комментарий, но у этого комментария есть условие, опубликовано или нет.

вот моя Post модель

...

public function comments()
{
    return $this->hasMany(Comment::class);
}
...

в моем коде выше, я могу просто использовать $post->comments, чтобы показать все комментарии.

как я уже говорил, мне нужно только показать комментарии с опубликованным значением true

а как добавить условия? ...

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Этого можно добиться, получив сообщение с опубликованными комментариями;

$post = Post::where('id', $id)->with('comments', function ($q) { 
     $q->where('published', true);
})->first(); 

Тогда, когда в представлении вы вызываете $ post-> comments, вы получите только опубликованный.

В качестве альтернативы, если вы действительно хотите, вы можете обновить модель, чтобы иметь отношение опубликованных комментариев, но это не рекомендуется.

public function publishedComments()
{
    return $this->hasMany(Comment::class)->where('published', true);
}
0 голосов
/ 09 сентября 2018

Вы можете получить только опубликованные комментарии, используя
$this->post->comments()->where('published', true)->get()

Проверьте Документация

Конечно, поскольку все отношения также служат построителями запросов, вы можете добавить дополнительные ограничения, к которым извлекаются комментарии, вызывая метод comments и продолжая связывать условия с запросом: $comment = App\Post::find(1)->comments()->where('title', 'foo')->first();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...