gpt4 book ai didi

php - SQL 没有插入到 Yii 中有关系的表中

转载 作者:行者123 更新时间:2023-11-29 03:02:16 24 4
gpt4 key购买 nike

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

--
-- 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`);

我哪里做错了?为什么不插入?

编辑

SystemUser 模型的规则:

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'),
);
}

编辑 Controller actionCreate()

一些背景知识:正如您从下面看到的,if 语句中的条件仅询问是否设置了 SystemUsers,因为创建来自 SystemUser 表单。我的目标是获取 system_user 的 party_id 并将其插入到与我正在使用的 SystemUsers 不同的模型的 Parties 表中。到目前为止,当我运行它时,没有任何反应。

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,
));

最佳答案

  1. Yii 不会在数据库中插入不安全的值,我之前遇到过这个问题,如果你使所有属性安全,你会没事的。您的属性现在仅在 search 场景 ('on'=>'search') 中是安全的。为了使所有属性在所有情况下都是安全的,请从两个模型规则中删除 'on'=>'search'

  2. 您将 $parties->id = $customers->getPrimaryKey(); 放在 $parties->save();.

    如果你也想保存$parties->id,把它放在save()

    之前
  3. 删除 redirect 行,我认为您的 save() 方法因此无法显示错误。


更新:

这个呢?

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

关于php - SQL 没有插入到 Yii 中有关系的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21423325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com