Как использовать оператор where для множественной вложенной загрузки в Laravel 5.8.2 - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть четыре таблицы, которые имеют отношения от первой до последней, где пользователи являются родителями для деревни в Applic_id , деревня в клетку в village_id , ячейка в сектор в cell_id

, и мой красноречивый запрос выглядит следующим образом, и он прекрасно работает без предложения where, когда добавляется предложение where, я получаю сообщение об ошибке: Столбец не найден: 1054 Неизвестный столбец Applicant_id'в' где пункт '

      // joins users , village ,cell and  sector
          $uvcsector = SectorApproval::with('Cell.Village.UserApplicant')
            ->where('applicant_id', 10)
        -> get();

Модели:

        class Users extends Model
    {
   protected $table ="users";
    public function VillageApplicant(){
    return $this->hasMany(VillageApproval::class);
   }
 }


class VillageApproval extends Model
  {
  protected $table ="villageapplication";
     // OnetoOne relationship inverse
     public function UserApplicant()
    {
        return $this->belongsTo(Users::class, 'applicant_id');
   }

   // One Village application can be sent in one cell  (OnetoOne)
    public function Cell(){
       return $this->hasOne(CellApproval::class);
    }
  }


 class CellApproval extends Model
   {
  protected $table ="cellapplication";
    // OnetoOne relationship inverse
    public function Village()
    {
   return $this->belongsTo(VillageApproval::class, 'village_id');
   }
   // One Cell application can be sent in one sector  (OnetoOne)
   public function Sector(){
    return $this->hasOne(SectorApproval::class);
   }
  }


class SectorApproval extends Model
  {
   protected $table ="sectorapplication";
   // OnetoOne relationship inverse
   public function Cell()
   {
   return $this->belongsTo(CellApproval::class, 'cell_id');
  }
   }

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Используйте whereHas для поиска в связанных таблицах.

$uvcsector = SectorApproval::with('Cell.Village.UserApplicant')
            ->whereHas('Cell.Village.UserApplicant', function($query) use ($id){
                $query->where('applicant_id', $id);
            })
            -> get();
0 голосов
/ 23 сентября 2019
->where('village.application_id', 10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...