Перебрал множество способов и не один не сработал.
News::query();
if ($request->has('is_hidden')) {
$query->where('is_hidden', 1);
}
if ($request->has('is_moderated'))
$query->where('is_moderated', 1);
$list = $query->with(array('source' => function ($query) {
$query->select(['id', 'url', 'name']);
}))->select(['id', 'image_url', 'published', 'added', 'header']);
Так в source-null
News::query();
if ($request->has('is_hidden')) {
$query->where('is_hidden', 1);
}
if ($request->has('is_moderated'))
$query->where('is_moderated', 1);
$list = $query->with(array('source' => function ($query) {
$query->get(['id', 'url', 'name']);
}))->get(['id', 'image_url', 'published', 'added', 'header'])
И так тоже
if ($request->has('is_hidden')) {
$query->where('is_hidden', 1);
}
if ($request->has('is_moderated'))
$query->where('is_moderated', 1);
$list = $query->with('source')->get();
Вот так не null но тут я не указал поля, как сделать чтобы и поля можно было указать и в source и news