我正在拿起PHP Active Record并处理关联.我有两个相关对象使用"Has_Many"和"Belongs_to"(父/子)并尝试在创建新父记录时创建子记录(在这种情况下为我的"单位"创建"皮肤").
class Unit extends ActiveRecord\Model
{
static $has_many = array(
array('skins')
);
}
class Skin extends ActiveRecord\Model
{
static $belongs_to = array(
array('unit')
);
}
Run Code Online (Sandbox Code Playgroud)
我在这里找到了这两个主题: http: //www.phpactiverecord.org/boards/4/topics/153 Activerecord-association:创建新对象(查找类)
所以我的代码目前看起来像:
$unit = new Unit();
$unit->name = 'somename';
$unit->description = 'somedescription';
$skinArray = array('name' => $unit->name.' Default Skin');
$unit->create_skins($skinArray);
$unit->save();
Run Code Online (Sandbox Code Playgroud)
上面的代码没有将新皮肤与数据库中的单元或代码相关联,尽管它/是/在数据库中放置一个新的皮肤记录(unit_id为NULL).使用"build_skins"不会在数据库中放入Skin记录.
我希望有一种方法可以通过模型本身向父模型添加"子",就像其他ORM一样.我能做到这一点的唯一方法就是明确地做到这一点:
$unit = new Unit();
$skin = new Skin();
$unit->name = 'somename';
$unit->description = 'somedescription';
$unit->save();
$skin->unit_id = $unit->id;
$skin->name = $unit->name.' Default Skin';
$skin->save();
Run Code Online (Sandbox Code Playgroud)
也许这就是它应该在PHP ActiveRecord中完成的方式,我的期望是错误的.但我希望有一种方法可以通过不需要首先使用显式调用将父节点保存到DB的对象来实现.例如,"Recess"PHP框架可以在单元上进行简单的调用,如:$ unit-> …