#laravel #laravel-5 #eloquent
#laravel #laravel-5 #eloquent
Вопрос:
Я пытаюсь выполнить предложение where для fortune_code внутри таблицы joindraw, сравнивая с lucky_fortune_code из таблицы product. Как я могу получить доступ и выполнить проверку?
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();
Product.php
class Product extends Model
{
public function joindraw(){
return $this->hasMany('AppModelsJoindraw');
}
Joindraw.php
class Joindraw extends Model
{
public function product(){
return $this->belongsTo('AppModelsProduct', 'product_id');
}
Комментарии:
1. откуда вы берете этот «$this-> lucky_fortune_code»?
2. @GauravGupta Я не могу его получить. Считалось, что можно сделать это как в модели
3. попробуйте с продуктом. lucky_fortune_code или просто lucky_fortune_code
4. пробовал $query->where(‘fortune_code’, ‘lucky_fortune_code’) и $query->where(‘fortune_code’, ‘продукт. lucky_fortune_code’) ничего не возвращает
5. покажите вашу модель и взаимосвязь между моделями
Ответ №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, вам следует подумать о своей структуре отношений, потому что, вероятно, что-то не так.
Комментарии:
1. Я хочу получить доступ к коду lucky_fortune_code в самом табличном продукте. У меня нет предопределенной переменной.
2. Как я могу объединить таблицу joindraws с таблицей user?
3. Спасибо за ваше напоминание! Я записал область видимости в файл модели для упрощения сопровождения. Системе потребуется изменить порядок в зависимости от ситуации.
4. Я понял! Достаточно просто -> с помощью(‘user’). Спасибо!!