Laravel красноречиво получает свойство модели текущего запроса

Я пытаюсь сделать предложение where для кода удачи внутри таблицы joindraw, сравнивая с Lucky_fortune_code из таблицы продуктов. Как я могу получить доступ и сделать проверку?

Product::where('status', StatusConstant::PT_ENDED_PUBLISHED)
       ->where('lucky_fortune_code', '<>', '')
       ->with(['joindraw' => function ($query){
              $query->where('fortune_code', $this->lucky_fortune_code)
                    ->with('user');}])->desc()->get();

Продукт.php

class Product extends Model
{
    public function joindraw(){
        return $this->hasMany('App\Models\Joindraw');
    }

Присоединяйтесь.php

class Joindraw extends Model
{
    public function product(){
        return $this->belongsTo('App\Models\Product', 'product_id');
    }

откуда вы взяли этот "$this->lucky_fortune_code"?

Gaurav Gupta 01.04.2019 11:46

@GauravGupta Я не могу это понять. Считалось, что это можно сделать, как в модели

1myb 01.04.2019 11:47

попробуйте с product.lucky_fortune_code или просто lucky_fortune_code

Gaurav Gupta 01.04.2019 11:48

попробовал $query->where('fortune_code', 'lucky_fortune_code') и $query->where('fortune_code', 'product.lucky_fortune_code') ничего не возвращает

1myb 01.04.2019 11:52

показать свою модель и отношения между моделями

Sohel0415 01.04.2019 11:56

@ Sohel0415, вот.

1myb 01.04.2019 11:58

@ 1myb вы хотите, чтобы это было в методе построителя запросов?

Gaurav Gupta 01.04.2019 12:04

@GauravGupta Лучше всего было бы в построителе запросов, потому что у меня есть еще несколько методов, сталкивающихся с той же проблемой. Что вы предлагаете?

1myb 01.04.2019 12:06

предоставьте мне необработанный запрос, я преобразую его в форму построителя запросов @1myb

Gaurav Gupta 01.04.2019 12:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
9
300
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что вы можете сделать, так это присоединиться:

Product::where('status', StatusConstant::PT_ENDED_PUBLISHED)
   ->where('lucky_fortune_code', '!=', '')
   ->join('joindraws', 'joindraws.fortune_code', '=', 'products.lucky_fortune_code')->get();

Кстати, вы также можете опустить второй параметр 'product_id' в отношении belongsTo(), так как это имя столбца уже предполагается по соглашению.

Кроме того, в построителе запросов нет метода desc(). Вместо этого используйте orderBy('lucky_fortune_code', 'desc').

Однако всякий раз, когда вам нужно писать соединения в Laravel, вам следует подумать о структуре ваших отношений, потому что, вероятно, что-то не так.

Я хочу получить доступ к lucky_fortune_code в самой таблице Product. У меня нет предопределенной переменной.

1myb 01.04.2019 12:30

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

1myb 01.04.2019 12:47

Спасибо за напоминания! Я записал прицел в файл модели для удобства обслуживания. Системе потребуется изменить порядок в зависимости от ситуации.

1myb 01.04.2019 12:48

Я понял! Просто ->with('user') подойдет. Спасибо!!

1myb 01.04.2019 12:54

Другие вопросы по теме