FuelPHP:级联删除不起作用
我有两张桌子。一个是类别,该类别有许多提名 表类别FuelPHP:级联删除不起作用,php,fuelphp,Php,Fuelphp,我有两张桌子。一个是类别,该类别有许多提名 表类别 protected static $_has_many = array( 'nominations' => array( 'key_from' => 'id', 'key_to' => 'category_id', 'model_to' => 'Model_Nominations', 'cascade_sa
protected static $_has_many = array(
'nominations' => array(
'key_from' => 'id',
'key_to' => 'category_id',
'model_to' => 'Model_Nominations',
'cascade_save' => true,
'cascade_delete'=> true
)
);
表格提名
protected static $_belongs_to = array(
'categories' => array(
'key_from' => 'category_id',
'key_to' => 'id',
'model_to' => 'Model_Categories',
'cascade_save' => true,
'cascade_delete'=> true
)
);
当我删除类别时:
public static function delete_($args)
{
$q = Model_Categories::query()
->where('id','=',$args['id']);
if($q->count() > 0){
$q->delete();
return true;
}
return false;
}
即使cascade\u delete
设置为true,它也不会删除提名表中的提名条目。我错过了什么?你的逻辑错了
在您的示例中,$q
是一个ORM查询对象,因此delete只运行一个delete查询:delete FROM categories WHERE id=?
如果要删除对象及其关系,则需要获取模型对象及其关系。它不会级联到未加载的关系中
public static function delete_($args)
{
if ($result = Model_Categories::find($args['id'], array('related'=>array('nominations')))
{
return $result->delete();
}
return false;
}
哪种燃料版本?您是否已启用探查器来检查生成的查询?