jaybizzle/hasmeta

将模型元数据访问得就像它是模型的一个属性一样

v0.1.3 2014-10-22 09:24 UTC

This package is auto-updated.

Last update: 2024-09-06 09:30:52 UTC


README

一个Laravel trait,允许您像访问模型属性一样访问模型元数据

Latest Stable Version Total Downloads Latest Unstable Version License

安装

运行 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();