Не имеет внутри, где имеет отношение hasMany - PullRequest
0 голосов
/ 29 октября 2019

У меня есть модель под названием «Recibo», на этой модели у меня есть отношение hasMany, подобное этому:

public function  recaudarRecibo(){
     return $this->hasMany('App\RecaudaRecibo','ID_RECIBO','ID_RECIBO');
 }

Поскольку «RECIBO» (квитанция) может быть в одном или нескольких «RECAUDACION» (сборы), тогда «RECAUDACION» может заплатить одну или несколько «CUOTA» (взносов), поэтому на модели «RecaudaRecibo» у меня другое отношение:

public function compromisoCuotaPago(){
    return $this->hasMany('App\CompromisoCuotaPago', 'ID_RECAUDA', 'ID_RECAUDA')
                ->where('SEC_RECAUDA', $this->SEC_RECAUDA)
                ->where('ID_RECIBO', $this->ID_RECIBO);
}

Вот самая забавная часть: В настоящее время я 'Сейчас я разрабатываю отчет, это мой красноречивый запрос:

$recaudaciones = Recibo::whereHas('recaudarRecibo', function($q) use ($anio){
                $q->whereRaw("YEAR(FEC_PAGO) = $anio")
                ->whereRaw("IND_DIR_EXT = 'D'")
                ->doesntHave('compromisoCuotaPago')
                ->where("COD_ESTADO_PAGO", 1);
            })->where("COD_TIPO_APORTE", 1)
            ->where("ID_LINEA_INGRESO", $lineaIngreso->ID_LINEA_INGRESO)
            ->get();

Проблема в том, что whereHas('recaudaRecibo') не может иметь отношения compromisoCuotaPago, но когда я печатаю запрос, это происходит:

select *
 from `M_RECIBO` 
 where exists (
   select * 
   from `R_RECAUDA_RECIBO` 
   where `M_RECIBO`.`ID_RECIBO` = `R_RECAUDA_RECIBO`.`ID_RECIBO` and YEAR(FEC_PAGO) = 2019 
   AND MONTH(FEC_PAGO) = 10 and IND_DIR_EXT = 'D' and not exists 
   (select * 
    from `R_COMPROMISO_CUOTA_PAGO` 
    where `R_RECAUDA_RECIBO`.`ID_RECAUDA` = `R_COMPROMISO_CUOTA_PAGO`.`ID_RECAUDA` 
   and `SEC_RECAUDA` is null and `ID_RECIBO` is null) 
   and `COD_ESTADO_PAGO` = 1) 
 and `COD_TIPO_APORTE` = 1 and YEAR(FEC_VCTO) = (2019 - 1) 
 and `ID_LINEA_INGRESO` = 4;

Итак, отношения не правильные, это хорошо, когда я использую его из объекта, но когда я делаю такой запрос, он дает ноль. Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...