Koresh Я бы тебе рекомендовал не делать проверку на то опубликована запись или нет.
Проверки на публикацию лучше выносить в scope метод
Вот пример:
public function scopeActive($query)
{
return $query->where('is_active', 1);
}
Почему не проверять статус публикации в твиге?
Представим следующее.
У тебя есть массив постов 5шт. И ты хочешь вывести его в каком-нить блоке, типа похожие посты где надо выводить только 3 поста. Посты должны быть опубликованы.
$posts = [
[ 'name' => 'Первый пост', 'is_public' => 1 ],
[ 'name' => 'Второй пост', 'is_public' => 0 ],
[ 'name' => 'Третий пост', 'is_public' => 0 ],
[ 'name' => 'Четвертый пост', 'is_public' => 1 ],
[ 'name' => 'Пятый пост', 'is_public' => 1 ]
]
Ты на странице в твиге напишешь так:
{% for post in posts %}
{% if loop.index <= 3 %}
{% if post.is_public %}
{{ post.name }}
{% endif %}
{% endif %}
{% endfor %}
В итоге ты получишь вывод одного поста!
Потому что твои опубликованные посты идут вперемешку с неопубликованными. А проверку на количество ты можешь сделать самым рациональным образом только на текущий индекс цикла. А циклу все равно он возвращает только номер текущей итерации.
Причем даже если ты поменяешь условия местами ничего не изменится, так как итерация в любом случае прибавит +1.
Как показать неопубликованные объекты админу?
Об этом сказал @Boarworm
Просто условием.