FuelPHP ORM无法插入相关表 我的数据库: 模型

FuelPHP 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 =

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 = 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]);