Задать вопрос
@Verkan

Как использовать в where значения из другой таблицы?

Здравствуйте, не могу понять как сравинть значания из разных таблиц.
Мне нужно получать Видео где у комании хавит средст на оплату места.
Ниже есть польный контекст.
Схема таблиц (Цветом выделенно то, что нужно сравнить)
617d14e22c423645008621.png

Фрагмент кода
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 если буду вопросы задавайте, отвечу оперативно
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Verkan Автор вопроса
Использовать join и все...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы