Laravel: отношения по двойному/составному первичному ключу

Из коробки Laravel не поддерживает работу с составными ключами, но с помощью пакета awobaz/compoships мы можем это сделать.

Установка пакета через composer:
$ composer require awobaz/compoships

Пример использования:
namespace App;

use Illuminate\Database\Eloquent\Model;

class A extends Model
{
    use \Awobaz\Compoships\Compoships;
    
    public function b()
    {
        return $this->hasMany(B:class, ['pk1', 'pk2'], ['lpk1', 'lpk2']);
    }
}

namespace App;

use Illuminate\Database\Eloquent\Model;

class B extends Model
{
    use \Awobaz\Compoships\Compoships;
    
    public function a()
    {
        return $this->belongsTo(B:class, ['lpk1', 'lpk2'], ['pk1', 'pk2']);
    }
}
Compoships на момент написания статьи поддерживал следующие отношения:

  • hasOne
  • hasMany
  • belongsTo

Комментарии

Популярные сообщения