我在B的b_id
上有两个模型A和B,外键在id
的A上。模型代码如下
A具有特征BB,具有以下方法
public function b() // shared by multiple models
{
return $this->hasOne(B::class, 'id', 'b_id'); // table has foreign keys setup
}
public function saveB($params){
$b = $this->b;
if(is_null($b)) $b = new B;
else $b->a()->dissociate($b->id); // if there is a b break the link between them
if($b->setParams($params) === true)
{
try {
$this->b()->save($b);
$this->save();
} catch (Exceptio ....... throw an exception if anything
}
B是方法
的模型public method setParams($params) {
$this->trigger = $params[0];
$this->colour = $params[1];
.... arbitrary stuff not related;
}
问题出现在以下 TestCase 逻辑
中public function setUp()
{
parent::setUp();
$this->a = A::find(237); // actual record
$this->a->saveB(['trigger'=>1,'colour'=>'orange']);
}
public function testSaveB(){
$this->assertGreaterThan(0, $this->a->b_id);
}
assertGreaterThan测试失败,即使以下内容为真,b_id为null
请注意,模型名称已经更改,以便更容易理解,但功能或多或少与我的功能完全相同
此逻辑model->hasOne()->save(model)
是否会插入新创建的模型并为其更新外键?或者我是否还要更新密钥/值和$ a-> update()而不是$ a-> save()?