gpt4 book ai didi

php - Yii 使用用户身份对象分配外键值

转载 作者:行者123 更新时间:2023-11-30 00:42:00 25 4
gpt4 key购买 nike

在我的 Web 应用程序中,我有 3 个名为 Producer_offer,consumer_req,admin 的表用户类型,以及一个 user 表, Producer,consumer 。关系

user.id=producer_offer.offered_by
user.id=consumer_req.requested_by

基本上,根据使用用户 ID 登录的用户,它应该根据用户类型和 ID 自动分配给 Consumer_req 和 Producer_offer 表中的外键我尝试了以下代码,但它在 userController 中不起作用

public function actionCreate()
{
$model=new User;
// $this->performAjaxValidation($model);
if (isset($_POST['User'])) {
$model->attributes=$_POST['User'];
if ($model->save()) {

if($model->user_type=='producer'){
$producer=new ProducerOffer;
$producer->offered_by=$model->id;
//$producer->save();
}
if($model->user_type=='consumer'){

$consumer=new ConsumerReq;
$consumer->requested_by=$model->id;
//$consumer->save();
}

$this->redirect(array('view','id'=>$model->id));
}
}

$this->render('create',array(
'model'=>$model,
));
}

我的 userIdentity 类代码

class UserIdentity extends CUserIdentity

{

private $_id;


public function authenticate()
{
$user = User::model()->findByAttributes(array(
'email'=>$this->username));
if ($user === null) {

$this->errorCode=self::ERROR_USERNAME_INVALID;
} else if ($user->pass !==
hash_hmac('sha256', $this->password,
Yii::app()->params['encryptionKey']) ) {

$this->errorCode=self::ERROR_PASSWORD_INVALID;
} else {
$this->errorCode=self::ERROR_NONE;
$this->setState('type', $user->user_type);
$this->setState('id', $user->id);
$this->_id = $user->id;

}
return !$this->errorCode;

}

public function getId() {
return $this->_id;

}

}

在我的 siteController 中,我在 actionSetup() 中有此代码用于分配用户类型

public function actionSetup(){
$auth->assign($user->type,$user->id);
}

但是当我执行时,我收到以下错误

CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`AFFM`.`producer_offer`, CONSTRAINT `producer_offer_ibfk_2` FOREIGN KEY (`offered_by`) REFERENCES `user` (`id`)). The SQL statement executed was: INSERT INTO `producer_offer` (`offered_vegetable`, `offered_qty`, `unit_cost`, `unit_delivery_cost`, `offered_date`, `booking_status`, `booked_by`) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5, :yp6)

最佳答案

您正在 product_offer 表中插入一条记录,但没有插入外键字段 offered_by。如果您想允许此字段为空,则必须在数据库中将此字段设置为 NULL。

关于php - Yii 使用用户身份对象分配外键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21694937/

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