ghanuz/relations
Composer 安装命令:
composer require ghanuz/relations
包简介
To create a Eloquent relationships with comma separated foreign key or using a FIND_IN_SET mysql function.
README 文档
README
Set eloquent relationships with table that contains comma separated values as a foreign key
Installation
Get package using composer :
composer require ghanuz/relations
1.
You have to extends GhanuZ\Model class instead of Illuminate\Database\Eloquent\Model
<?php
namespace App;
use GhanuZ\Model;
class Test extends Model
{
//
}
You can also use traits instead of extend Model class
Like in Laravel, Users model not extending Model class.
So you can use trait.
GhanuZ\FindInSet\FindInSetRelationTrait
Example:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use GhanuZ\FindInSet\FindInSetRelationTrait;
class User extends Authenticatable
{
use Notifiable, FindInSetRelationTrait;
public function city ()
{
return $this->FindInSetOne( 'App\City', 'city_ids', 'id', 1);
}
public function state ()
{
return $this->FindInSetOne( 'App\State', 'city_ids', 'id', 2);
}
public function country ()
{
return $this->FindInSetOne( 'App\Country', 'city_ids', 'id', 3);
}
public function hobbies ()
{
return $this->FindInSetMany( 'App\Hobbies', 'hobbies_id', 'id');
}
}
To create HasMany Relation you have to write as :
public function order_product (){
return $this->FindInSetMany( CLASS_NAME, FOREIGN_KEY, LOCAL_KEY);
}
To create HasOne Relation you have to write as :
public function order_product (){
return $this->FindInSetOne( CLASS_NAME, FOREIGN_KEY, LOCAL_KEY);
}
You can also pass 4th argumaent to detect position in FIND_IN_SET :
If you have an address table schema and stored city_ids like city_id,state_id,country_id.
Now, you want to find only city_id, you will do as :
select * from address where FIND_IN_CITY( 2, city_ids ) = 1;// Here $index = 1
Like, for state_id:
select * from address where FIND_IN_CITY( 1, city_ids ) = 2;// Here $index = 2
Like, for country_id:
select * from address where FIND_IN_CITY( 5, city_ids ) = 3;// Here $index = 3
4th argument is optional
public function order_product (){
return $this->FindInSetMany( CLASS_NAME, FOREIGN_KEY, LOCAL_KEY, Number);
}
Added support of Array cast from version v3.
From version v3, you can also use custom casting provided by the Laravel framework to manipulate comma deligated value into array. If you are using casts of Laravel to convert the string with comma value into Array then this package also support it to retrive the related table data.
Example
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'FIELD' => CUSTOM_CLASS::class,
];
/**
*
* To retrive array of relational tables
*
*/
public function order_products ()
{
return $this->FindInSetMany( CLASS_NAME, FOREIGN_KEY, LOCAL_KEY, Number);
}
/**
*
* To retrive single data of the relational table
*
*/
public function order_product ()
{
return $this->FindInSetOne( CLASS_NAME, FOREIGN_KEY, LOCAL_KEY, Number);
}
ghanuz/relations 适用场景与选型建议
ghanuz/relations 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.5k 次下载、GitHub Stars 达 6, 最近一次更新时间为 2020 年 09 月 03 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「eloquent」 「relationship」 「comma-separate」 「find_in_set」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ghanuz/relations 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ghanuz/relations 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ghanuz/relations 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Missing relationship events for Laravel
A Laravel Eloquent model trait for translatable resource
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
Help to manage meta data on Laravel Eloquent model
A package to cast json fields, each sub-keys is castable
Manage the laravel eloquent model relationships, table columns and column types
统计信息
- 总下载量: 5.5k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 7
- 点击次数: 16
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-09-03