Я думаю, что есть недоразумение о том, как должны работать области видимости.Область действия в основном похожа на быстрый запрос модели.Вы используете его для проверки существования отношений, но есть лучший способ сделать это, используя whereHas
Вот как вы могли бы добиться этого, используя отношения:
class OutDoorMedia extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'id',
'user_id',
'address',
'location',
'media_type',
];
public function previousOrders() {
return $this->hasMany('App\Models\OutDoorMediaOrders', 'odm_id', 'id');
}
public function getPreviouslyOrderedAttribute() {
return $this->previousOrders()->exists();
}
}
Тогда вы простоdo:
$Media_query = OutDoorMedia::whereHas('previousOrders')
->orderby('created_at', 'desc');
Если вы автоматически добавили динамический атрибут в модель, вы можете просто добавить в модель следующее:
public $appends = [ 'previously_ordered' ];
Полагаю, если вы хотите получить лучшее от обоихМиры, которые вы можете сделать:
class OutdoorMediaWithPreviouslyOrdered extends OutDoorMedia {
public $appends = [ 'previously_ordered' ];
}
Затем, когда вам понадобится модель дополнения, вы можете использовать:
$Media_query = OutdoorMediaWithPreviouslyOrdered ::orderby('created_at', 'desc');