Я пытаюсь принести только POST без комментариев, и если у них есть комментарии, принесите мне только если последний комментарий contact_type_id = 4, проблема, которую мне удается принести мне список продуктов с комментариями или без них, но я не могу заставить меня также сделайте фильтр, который, если последний комментарий с ID 4, показывал его мне, чтобы он решил предоставить мне все данные.
Как я могу решить эту проблему, поскольку после этого запроса я увеличиваю область действия, которая фильтрует больше элементов Продукта.
Контроллер
$leads = Lead::openedStage1()->doesntCommentOrHasComments($filter_id);
Модель
public function scopeOpenedStage1($query){
$query
->where('status_id','!=',5)->where('status_id','!=',4);
}
public function scopeDoesntCommentOrHasComments($query,$filter_id){
if ($filter_id == 1 )
$query->doesntHave('comments')->orWhereHas('comments', function($q){
$q->where('contact_type_id','=',4)->orderBy('date_publication','DESC');//not worked latest
});
if ($filter_id == 2)
$query->doesntHave('comments')->orWhereHas('comments', function ($q){
$q->where('contact_type_id','!=',4);
});
return $query;
}
@TimLewis Я думаю, что это не сработает, поскольку он хочет получить последний комментарий (если он есть), то есть contact_type_id = 4, если он отличается от 4, не получите его, поэтому limit(1) всегда будет получать последний комментарий, игнорируя contact_type_id.
Автор, я не разбираюсь в таких запросах (если вы можете сделать это в одном запросе), но я могу сказать вам, что избегайте использования жестко закодированных ссылок на ваш код. Например, не используйте 5 или 4 в качестве status_id в вашем коде, сделайте их константами в правильном классе и ссылайтесь на эту константу, поэтому, если однажды изменится, она повсюду изменится на одно и то же значение, а также ее можно будет отслеживать ( IDE). То же самое для contact_type_id или любого enum, который вы хотите использовать в PHP. Моя скромная рекомендация.






Можете ли вы просто применить
->limit(1)к вашему запросу? Это позволит вам продолжить связывание методов, но не возвращает ничего, как это делает->first().