cakesuit / metatable
Cakesuit/MetaTable 插件用于 CakePHP
0.1.3
2017-11-21 06:19 UTC
Requires
- cakephp/cakephp: ^3.4
Requires (Dev)
- phpunit/phpunit: ^5.7|^6.0
This package is not auto-updated.
Last update: 2024-09-29 04:31:29 UTC
README
安装
您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。
安装 composer 包的推荐方法是
composer require Cakesuit/MetaTable
bin/cake plugin load Cakesuit/MetaTable
如何使用它(例如)
创建用户表
CREATE table users ( id int(11) auto_increment NOT NULL key, username varchar(20) NOT NULL, password varchar(60) NOT NULL, );
为用户创建元表
CREATE table meta_users ( id int(11) auto_increment key NOT NULL, user_id int(11) NOT NULL, meta_key varchar(255) NOT NULL, meta_value TEXT NULL );
插入用户行
插入用户元行
配置 UsersTable
<?php // ... class UsersTable extends Table { public function initialize(array $config) { parent::initialize($config); $this->setTable('users'); $this->setDisplayField('username'); $this->setPrimaryKey('id'); $this->hasMany('MetaUsers', [ 'foreignKey' => 'user_id', ]); // Add behavior $this->addBehavior('Cakesuit/MetaTable.Meta', [ /** * Define meta table name * Required: true * Default: null */ 'metaTableName' => 'MetaUsers', /** * Define the name for return de meta * Required: false * Default: meta */ 'propertyName' => 'meta', /** * Define de key column * Required: false * Default: meta_key */ 'keyField' => 'meta_key', /** * Default value * Require: false * Default Table::getDisplayField() */ 'valueField' => 'meta_value', /** * Method for save meta * Required: false * Default: 'both' * false: insert into meta * true: insert into object entities * both: meta & object entities */ 'addProperties' => 'both', ]); } }
获取元数据
<?php $usersTable = \Cake\ORM\TableRegistry::get('Users'); $user = $usersTable->get(1, [ 'contain' => ['MetaUsers'] ]); echo $user->username; // Cakesuit // With addProperties (true) in behavior config echo $user->age; // 26 echo $user->sexe; // male // Without addProperties (false) in behavior config echo $user->meta->age; // 26 echo $user->meta->sexe; // male // Get age value echo $user->meta->get('age'); // 26 // Fetch the entity ID : fetch($key, default) echo $user->meta->fetch('age'); // 26 echo $user->meta->fetch('age.id', null); // 1 // Check has ID : has($key) echo $user->meta->has('sexe'); // true echo $user->meta->has('sexe.id'); // true echo $user->meta->has('sexe.other'); // false // Check if empty value : isEmpty($key) echo $user->meta->isEmpty('sexe'); // false echo $user->meta->isEmpty('sexe.meta_value'); // false echo $user->meta->isEmpty('other'); // true // Check equal value : equalTo($expected, $key, strict = false) echo $user->meta->equalTo('male', 'sexe', false); // true echo $user->meta->equalTo(1, 'age.id', true); // true if ($user->meta->equalTo('26', 'age', true)) { // Return Cakesuit is 26 years old echo sprintf( '%s is %d years old', $user->username, $user->age // or $user->meta->gat('age') ); }
...
如果您遇到任何困难,请与我联系。谢谢。
C@kesuit