jaybizzle / hasmeta
将模型元数据访问得就像它是模型的一个属性一样
v0.1.3
2014-10-22 09:24 UTC
Requires
- php: >=5.4.0
- illuminate/support: 4.2.*|5.0.*
This package is auto-updated.
Last update: 2024-09-06 09:30:52 UTC
README
一个Laravel trait,允许您像访问模型属性一样访问模型元数据
安装
运行 composer require jaybizzle/hasmeta 0.1.*
或将 "jaybizzle/hasmeta": "0.1.*"
添加到您的 composer.json
文件中
在您想要使用 HasMeta
的模型中添加以下属性
use Jaybizzle\Hasmeta\HasMetaTrait; protected $meta_model = 'ModelName'; // the name of your meta data model protected $meta_foreign_key = 'user_id'; // the foreign key of your main model protected $meta_primary_key = 'meta_id'; // the primary key of you meta data model protected $meta_key_name = 'dataName'; // the column name that stores your meta data key name protected $meta_value_name = 'dataValue'; // the column name that stores your meta data value
现实世界示例
没有比一个简单的示例更能说明问题了
###设置
users
表
users_meta
表
User.php
模型
class User extends Eloquent { use Jaybizzle\Hasmeta\HasMetaTrait; protected $meta_model = 'UserMeta'; protected $meta_foreign_key = 'user_id'; protected $meta_primary_key = 'id'; protected $meta_key_name = 'meta_name'; protected $meta_value_name = 'meta_value'; /** * The database table used by the model. * * @var string */ protected $table = 'users'; /** * The primary key on the table * * @var string */ protected $primaryKey = 'id'; // ... }
UserMeta.php
模型
class UserMeta extends Eloquent { /** * The database table used by the model. * * @var string */ protected $table = 'users_meta'; /** * The primary key on the table * * @var string */ protected $primaryKey = 'id'; // ... }
###使用方法
现在我们可以简单地这样做来获取元数据...
$user = User::find(1); echo $user->gender; // Will output 'Male'
我们也可以轻松保存元数据...
$user = User::find(1); $user->gender = 'Female'; $user->save();
删除元数据...
$user = User::find(1); $user->gender = null; $user->save();
添加新元数据...
$user = User::find(1); $user->anything_you_want = 'some lovely value'; $user->save();