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;
}

哪种燃料版本?您是否已启用探查器来检查生成的查询?