sheldonreiff/laravel-advanced-relationships

使用awobaz/compoships和staudenmeir/eloquent-json-relations进行多列和JSON关系

v1.0.0 2020-01-12 02:45 UTC

This package is auto-updated.

Last update: 2024-09-07 10:00:46 UTC


README

使用awobaz/composhipsstaudenmeir/eloquent-json-relations为Laravel Eloquent实现多列和JSON列关系

在最近的项目中,我遇到了需要在同一模型中使用多列和JSON列关系的需求。Laravel原生不支持这两种功能。存在两个第三方包分别提供这些功能,但由于它们具有冲突的方法,所以不能在同一类中使用。本包将awobaz/composhipsstaudenmeir/eloquent-json-relations结合,以便在同一Laravel模型中提供两者的完整功能。

安装

composer require sheldonreiff/laravel-advanced-relationships

用法

HasAdvancedRelationships特质添加到父模型和关联模型。对于所有支持的关系,可以根据下面的示例指定本地键和外部键的JSON列、多列或多JSON列。

namespace App;

use Illuminate\Database\Eloquent\Model;

class A extends Model
{
    use \Reiff\AdvancedRelationships\HasAdvancedRelationships;
    
    public function b()
    {
        return $this->hasMany('B', 'f1', 'details->l1');
    }
    
    public function c()
    {
        return $this->hasMany('C', ['f1', 'details->f2'], ['details->l1', 'l2']);
    }
}

支持的关系

以下关系都支持多列和JSON列。

  • hasOne
  • hasMany
  • belongsTo

附加信息

有关其他功能和更多信息,请参阅awobaz/composhipsstaudenmeir/eloquent-json-relations。本包依赖于这些包,并仅实现了使它们协同工作的必要集成。