Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL未插入到Yii中具有关系的表中_Php_Mysql_Sql_Yii - Fatal编程技术网

Php SQL未插入到Yii中具有关系的表中

Php SQL未插入到Yii中具有关系的表中,php,mysql,sql,yii,Php,Mysql,Sql,Yii,我正在尝试创建一个用户,但所有的值都没有插入到数据库中。systems_user表与parties表有关系,因为party_id是sytems_用户的主键。没有插入任何内容。甚至没有错误,它只是返回到“创建”页面。这是我的模式: -- -- Table structure for table `system_users` -- CREATE TABLE IF NOT EXISTS `system_users` ( `party_id` bigint(20) unsigned NOT NUL

我正在尝试创建一个用户,但所有的值都没有插入到数据库中。systems_user表与parties表有关系,因为party_id是sytems_用户的主键。没有插入任何内容。甚至没有错误,它只是返回到“创建”页面。这是我的模式:

--
-- Table structure for table `system_users`
--

CREATE TABLE IF NOT EXISTS `system_users` (
  `party_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(200) NOT NULL,
  `password` varchar(255) NOT NULL,
  `date_last_login` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `status` varchar(50) NOT NULL DEFAULT 'Pending for Approval',
  `date_created` datetime NOT NULL,
  `date_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `user_role` varchar(255) NOT NULL,
  `isLogin` int(1) NOT NULL,
  PRIMARY KEY (`party_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=221 ;

--
-- Constraints for table `system_users`
--
ALTER TABLE `system_users`
  ADD CONSTRAINT `system_users_ibfk_1` FOREIGN KEY (`party_id`) REFERENCES `parties` (`id`);

-------------------------------------
-- Table structure for table `parties`
--

 CREATE TABLE IF NOT EXISTS `parties` (
   `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
   `party_type_id` int(10) unsigned NOT NULL,
   PRIMARY KEY (`id`),
  KEY `party_type_id` (`party_type_id`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=200 ;

--
-- Constraints for table `parties`
--
ALTER TABLE `parties`
  ADD CONSTRAINT `parties_ibfk_1` FOREIGN KEY (`party_type_id`) REFERENCES `party_types`    (`id`);
我哪里出错了?为什么没有插入

编辑

系统用户模型的规则:

public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('username, password, date_last_login, date_created, user_role, isLogin', 'required'),
        array('isLogin', 'numerical', 'integerOnly'=>true),
        array('username', 'length', 'max'=>200),
        array('password, user_role', 'length', 'max'=>255),
        array('status', 'length', 'max'=>50),
        array('date_modified', 'safe'),
        // The following rule is used by search().
        // Please remove those attributes that should not be searched.
        array('party_id, username, password, date_last_login, status, date_created, date_modified, user_role, isLogin', 'safe', 'on'=>'search'),
    );
}
缔约方规则:

 public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('party_type_id', 'required'),
        array('party_type_id', 'length', 'max'=>10),
        // The following rule is used by search().
        // Please remove those attributes that should not be searched.
        array('id, party_type_id', 'safe', 'on'=>'search'),
    );
}
编辑控制器操作创建()

一点背景:从下面可以看到,if语句中的条件只是询问是否设置了SystemUsers,因为create来自SystemUser表单。我的目标是获取system_用户的party_id并将其插入Parties表中,该表与我使用的SystemUsers不同。到目前为止,当我运行这个时,什么都没有发生

public function actionCreate()
{
    $parties = new Parties;
    $model= new SystemUsers;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

     if (isset($_POST['SystemUsers']))
            {
                $parties->attributes = (HOW can I put the party_id from $model here?);
                $model->attributes = $_POST['SystemUsers'];
                $valid = true; 
                $valid &= $parties->validate(); 
                $valid &= $model->validate(); 

                if($valid)
                    {
                        $parties->id = $model->getPrimaryKey();
                        $parties->save(); /* First save parties. */

                        $model->save(); 
                    }
            } 

    $this->render('create',array(
    'model'=>$model,
    'parties'=>$parties, 
    ));
  • Yii
    不会在数据库中插入不安全的值,我以前遇到过这个问题,如果您使所有属性都安全,您会没事的。您的属性现在仅在
    搜索
    场景中是安全的(
    'on'=>'search'
    )。要使所有场景中的所有属性都安全,请从两个模型规则中删除
    'on'=>'search'

  • 您放置了
    $parties->id=$customers->getPrimaryKey()
    $parties->save()之后编码>

    如果还想保存
    $parties->id
    ,请将其放在
    save()之前

  • 删除
    redirect
    行,我认为您的
    save()
    方法不能因此显示错误


  • 更新:

    这个怎么样

    if (isset($_POST['SystemUsers'])) {
        $model->attributes = $_POST['SystemUsers'];
        if($model->save()){  // save() does validation in itself
            $parties->id = $model->getPrimaryKey();
            $parties->save();
        }
    }
    

    发布您模型的规则方法Party_id是系统用户的自动增量和PK,下面您将其称为foregin key。。。??这是矛盾。更改您的PK名称,然后将您的party_id列引用为foreignkey@AlirezaFallah我已根据您的请求编辑了我的答案。为什么要先保存参与方?我先保存了它,因为它是外来项。我只在模型保存了从模型中检索到的pk之后才保存模型。这没有做任何事情。我真的希望我的控制器有问题。你是否也删除了SystemUser模型中的
    'on'=>'search'
    ?也删除了。我不明白那将如何解决我的问题。这些不是搜索规则吗?我不是在尝试搜索,而是在尝试“创建”。我不是说我不欣赏你的回答,但你能解释一下为什么你要我删除“on”=>“search”?是的,你必须确保属性安全,在所有情况下,删除该部分都可以好的,我明白你的解释。我会尝试改变一些东西。