FuelPHP ORM无法插入相关表 我的数据库: 模型
model/accounts.phpFuelPHP ORM无法插入相关表 我的数据库: 模型,php,orm,fuelphp,Php,Orm,Fuelphp,model/accounts.php class Model_AccountLevelGroup extends \Orm\Model { protected static $_table_name = 'account_level_group'; protected static $_primary_key = array('level_group_id'); // relations protected static $_has_many =
class Model_AccountLevelGroup extends \Orm\Model
{
protected static $_table_name = 'account_level_group';
protected static $_primary_key = array('level_group_id');
// relations
protected static $_has_many = array(
'account_level' => array(
'model_to' => 'Model_AccountLevel',
'key_from' => 'level_group_id',
'key_to' => 'level_group_id',
'cascade_delete' => true,
)
);
}
model/accountlevelgroup.php
class Model_AccountLevel extends \Orm\Model
{
protected static $_table_name = 'account_level';
protected static $_primary_key = array('level_id');
// relations
protected static $_belongs_to = array(
'account_level_group' => array(
'model_to' => 'Model_AccountLevelGroup',
'key_from' => 'level_group_id',
'key_to' => 'level_group_id',
),
'accounts' => array(
'model_to' => 'Model_Accounts',
'key_from' => 'account_id',
'key_to' => 'account_id',
)
);
}
model/accountlevel.php
创建用户。 我在accounts模型中使用register方法创建用户
$data['account_username'] = 'unique_username';
$data['account_password'] = 'pass';
$data['account_email'] = 'no@email.tld';
$account = self::forge($data);
$account->account_level = new Model_AccountLevel();
$account->account_level->level_group_id = 3;
$account->save();
$account_id = $account->account_id;
我犯了这个错误
指定的关系必须是数组或空的给定关系
帐户级别的值无效
如何插入相关表?我的代码有什么问题?您的
帐户级别
关系是一个有很多
,这意味着在访问它时,您需要像访问数组一样访问它。ORM希望该值为数组,因此将模型直接分配给它是无效的
您要做的是:
$account->account_level[] = new Model_AccountLevel(['level_group_id' => 3]);
(在构造函数中使用数组,因为我个人认为它更整洁,但不是必需的)帐户级别定义为有多个。。这意味着它必须是一个集合<代码>$account->account_level[]=新模型_AccountLevel()代码>。附加,不设置。
$data['account_username'] = 'unique_username';
$data['account_password'] = 'pass';
$data['account_email'] = 'no@email.tld';
$account = self::forge($data);
$account->account_level = new Model_AccountLevel();
$account->account_level->level_group_id = 3;
$account->save();
$account_id = $account->account_id;
$account->account_level[] = new Model_AccountLevel(['level_group_id' => 3]);