Красноречивые отношения ORM всегда возвращают ноль в laravel - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть 3 модели:

Модель MonHoc:

class MonHoc extends Model{
   protected $table='monhoc' ;
   protected $fillable = [
      'mamh', 'phuongthucgiangday', 'tenmh','tinchitichluy','tinchihocphi','hockydenghi',
   ];

   public function monTienQuyet(){
      return $this->hasMany('App\MonTQ','montq_id','id');
   }

   public function monTuyChon(){
      return $this->hasMany('App\MonTC','montc_id','id');
   }
}

Модель MonTC:

class MonTC extends Model{
   protected $table='monhoc_tuychon' ;
   protected $fillable = [
      'monhoc_id', 'montc_id',
   ];
   public function monhoc(){
      return $this->belongsTo('App\MonHoc','monhoc_id');
   }
}

Модель MonTQ:

class MonTQ extends Model{
   protected $table='montienquyet' ;
   protected $fillable = [
      'monhoc_id', 'montq_id',
   ];    
   public function monhoc(){
      return $this->belongsTo('App\MonHoc','monhoc_id');
   }
}

но когда я использую модель MonHoc в контроллере:

public function test(MonHoc $monhoc){
   $mon=$monhoc->monTienQuyet->toSql();
   dd($mon);
}

он показывает SQL

select * from `montienquyet` where `montienquyet`.`montq_id` is null and `montienquyet`.`montq_id` is not null

В MySQL он показывает ноль, потому что предложение where противоположно.Я не знаю, почему модель экспортирует этот SQL!

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Проверьте это:

public function test(MonHoc $monhoc){
   $monhoc = $monhoc->find(1) //the id that exists
   $mon=$monhoc->monTienQuyet;
   dd($mon);
}
0 голосов
/ 22 ноября 2018

Пожалуйста, попробуйте это:

Для hasMany:

return $this->hasMany(MonTC::class, 'montc_id');

Для belongsTo:

return $this->belongsTo(MonHoc::class, 'monhoc_id');

Другое решение:

return $this->hasMany('App\Models\MonTC', 'montc_id');

А

return $this->belongsTo('App\Models\MonHoc', 'monhoc_id');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...