FuelPHP多对多

时间:2016-04-20 20:08:29

标签: php fuelphp

我正在尝试在FuelPHP中建立关系,但我收到以下错误:

  

Fuel \ Core \ Database_Exception [23000]:   SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(filmestorrentzfilmes_tags,CONSTRAINT filmes_tags_filme_id FOREIGN KEY(filme_id )REFERENCES filmesid)ON UPETE UP ACTION ON UPDATE CASCADE)查询:“INSERT INTO filmes_tagsfilme_idtag_id)VALUES(''' ,'1')“

我不知道为什么但是FuelPHP正在生成一个空白的filme_id查询。

模特:Model_FilmeModel_Tag

在Model_Filme模型中,我有一个保存表单数据的函数:

public static function save_filme()
{
    $data = Input::post('data');
    $val = static::validate_filme();

    if ($val->run()) {
        if ($data['id']) {
            $filme = static::find($data['id'])->set($data);
            unset($filme->tags);
        } else {
            $filme = static::forge($data);
        }

        foreach ($data['tags'] as $tag_id) {
            $filme->tags[$tag_id] = Model_Tag::find($tag_id);
        }

        $filme->save(); return array($filme, true, null, null);
    } else {
        return array(static::forge($data), false, $val->error(), $data['tags']);
    }
}

我做错了什么?我正在使用FuelPHP 1.8

1 个答案:

答案 0 :(得分:0)

问题是在我看来有一个隐藏字段,其中保存id的值来编辑注册表,只是给了一个未设置(data ['id'])。解决!

public static function save_filme()
{
    $data = Input::post('data');
    $val = static::validate_filme();

    if ($val->run()) {
        if ($data['id']) {
            $filme = static::find($data['id'])->set($data);
            unset($filme->tags);
        } else {
            unset($data['id']);
            $filme = static::forge($data);
        }

        foreach ($data['tags'] as $tag_id) {
            $filme->tags[$tag_id] = Model_Tag::find($tag_id);
        }

        $filme->save(); return array($filme, true, null, null);
    } else {
        return array(static::forge($data), false, $val->error(), $data['tags']);
    }
}