Здравствуйте, не могу понять как сравинть значания из разных таблиц.
Мне нужно получать Видео где у комании хавит средст на оплату места.
Ниже есть польный контекст.
Схема таблиц (Цветом выделенно то, что нужно сравнить)
Фрагмент кода
return Video::whereHas('company',function (Builder $query) use ($themes){
$query
->where('status', true)
->whereHas('companySchedules',function (Builder $query){
$query->where('weekday',now()->dayOfWeek);
$query->where('hour',now()->hour);})
->whereHas('theme', function (Builder $query) use ($themes) {
$query->whereIn('id', $themes);}
)
;
})->
whereHas('videoDelay.themes',function (Builder $query) use ($themes){
$query->whereColumn('price','<=','company.balance'); //Тут должен подставиться баланс. С числом работает
$query->whereIn('id', $themes);}
)
->moderation()
->orderByRaw("RAND()")
->first() ?? false;
*$themes - это массив с id
Настройки моделей:
Video model
public function company(): BelongsTo
{
return $this->belongsTo(Company::class);
}
public function videoDelay(): BelongsTo
{
return $this->belongsTo(VideoDelay::class);
}
Company model
public function videos(): HasMany
{
return $this->hasMany(Video::class);
}
VideoDelay model
public function themes(): BelongsToMany
{
return $this->belongsToMany(Theme::class)->withPivot(['price']);
}
public function videos(): HasMany
{
return $this->hasMany(Video::class);
}
Theme model
public function videoDelay(): BelongsToMany
{
return $this->belongsToMany(VideoDelay::class)->withPivot(['price']);
}
P.S если буду вопросы задавайте, отвечу оперативно