lukesnowden / relationship-macros
v0.0.7
2018-12-05 17:00 UTC
Requires
- laravel/framework: 5.*
README
此特性允许您轻松为外键模型创建关系。
composer require lukesnowden/relationship-macros:^0.0.1
要允许在目标模型上使用,请使用特性 Lukesnowden\RelationshipMacros\Traits\Macro。
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Lukesnowden\RelationshipMacros\Traits\Macro; class Customer extends Model { use Macro; }
添加关系;
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Models\Customer; use Some\Other\Models\Order; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { Customer::relationshipMacro( 'orders', function() { return $this->hasMany( Order::class, 'customer_id' ); }); } }
现在您可以使用 eloquent 和查询构建器原生地使用关系;
@if( $customer->orders->isEmtpy() ) ... @endif You have {{ $customer->orders()->count() }} orders
您还可以使用整个类来存储您的关联,并一次性添加它们,请注意,所有方法都必须返回一个 Closure。
<?php class MyRelationships { public function orders() : \Closure { return function() { return $this->hasMany( Order::class, 'customer_id' ); }; } } Customer::relationshipMacros( new MyRelationships );
鸣谢
此特性是对 Macroable 包的修改版,用于与 Laravel 模型一起使用。
MIT 许可证
版权所有 © 2018 Luke Snowden
特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的个人免费使用权,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许提供软件的个人进行上述操作,但需遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该索赔、损害或其他责任是基于合同、侵权或其他法律,无论该索赔、损害或其他责任是否源于、因或与软件或软件的使用或其他交易有关。