Отношения между родителями и детьми Laravel на собственной модели

Я хочу получить все ваучеры, у которых есть хотя бы один ребенок, ваучер может иметь несколько ваучерных детей, но в любом ваучере может быть только один родитель.

Я установил его со следующими моделями и вызовами, и запрос, который он генерирует, по желанию, пока эта часть не будет: 'vouchers'.'parent_id' = 'vouchers'.'id'

Требуемая функциональность:

 $vouchers = Voucher::has('children')->get(); 

или

 $vouchers = Voucher::has('parent')->get(); 

Полученный запрос

 select * from `vouchers` where `vouchers`.`deleted_at` is null and (select count(*) from `vouchers` where `vouchers`.`deleted_at` is null and `vouchers`.`parent_id` = `vouchers`.`id` and `vouchers`.`deleted_at` is null ) >= 1 

Модели:

 class Voucher extends baseModel { public function parent() { return $this->belongsTo('Voucher', 'parent_id'); // return $this->belongsTo('Voucher', 'parent_id', 'id'); <- attempted but din't work } public function children() { return $this->hasMany('Voucher', 'parent_id'); } } 

Эта проблема была опубликована и исправлена ​​в 5.0 https://github.com/laravel/framework/pull/8193

К сожалению, нет обратного порта для версии 4.

Однако, если вы хотите применить исправление самостоятельно, вы можете увидеть список изменений здесь: https://github.com/laravel/framework/pull/8193/files

Будьте осторожны, модификация базы кода фреймворка находится под угрозой, но исправлений ошибок в версии Laravel 4.x больше не будет, только исправления безопасности еще на месяц.