我收到此错误“无法将`string`类型的值转换为整数”

时间:2019-11-05 10:00:24

标签: php cakephp-3.0

我想在数据库中保存多个记录,因此在前端,我提供了一个multiselect下拉列表,该列表返回了用户列表。 然后我通过每个userid并存储它的相关形式。 但这给了我一个错误。 不知道为什么。 下面是我的控制器代码。

   public function add($formid=null)
    {
        $this->loadModel("Forms");
        $this->loadModel("UserRoles");
        $company_id = $this->request->session()->read('Auth.User.company_id');
        $roles = $this->UserRoles->find()->where(['user_id'=>$this->request->session()->read('Auth.User.id')])->contain(['Roles'])->first();
        if($this->Forms->find()->where(['id'=>$formid,'company_id'=>$company_id])->count() > 0 || $roles->role->name == 'Superadmin')
        {
            $formAssign = $this->FormAssign->newEntity();
            if ($this->request->is('post')) {
                // assigning form to all selected Users
                $data = $this->request->getData();
                $data['form_id'] = (int)$this->request->getData('form_id');
                foreach ($this->request->getData('user_id') as $key => $value) {
                    $formAssign = $this->FormAssign->newEntity();
                    $data['user_id'] = (int)$value;
                    if($this->FormAssign->find()->where(['form_id'=>$formid,'user_id'=>$value])->count() == 0)
                    {
                        $formAssign = $this->FormAssign->patchEntity($formAssign, $data);
                        /*debug($formAssign);
                        exit;*/
                        if ($this->FormAssign->save($formAssign)) {

                        }
                    }

                }
                //end
             $this->Flash->success(__('Form is Assigned to Selected Users'));
             // return $this->redirect(['controller'=>'forms','action' => 'index']);
            }
            $forms = $this->FormAssign->Forms->find('list', ['limit' => 200])->where(['id'=>$formid]);
            $users = $this->FormAssign->Users->find('list', ['limit' => 200,'keyField'=>'id','valueField'=>'full_name'])->where(['Users.status'=>true]);
            $this->set(compact('formAssign', 'forms', 'users'));
        }
        else{
            return $this->redirect(['controller'=>'forms','action' => 'index']);
        }

    }

型号代码:

    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->setTable('form_assign');
        $this->setDisplayField('id');
        $this->setPrimaryKey('id');

        $this->belongsTo('Forms', [
            'foreignKey' => 'form_id',
            'joinType' => 'INNER'
        ]);
        $this->belongsTo('Users', [
            'foreignKey' => 'user_id',
            'joinType' => 'INNER'
        ]);
    }

    public function validationDefault(Validator $validator)
    {
        $validator
            ->integer('id')
            ->allowEmptyString('id', 'create');

        $validator
            ->dateTime('assigned_at')
            ->allowEmptyDateTime('assigned_at', false);

        $validator
            ->integer('updated_at')
            ->allowEmptyString('updated_at');

        return $validator;
    }
    public function buildRules(RulesChecker $rules)
    {
        $rules->add($rules->existsIn(['form_id'], 'Forms'));
        $rules->add($rules->existsIn(['user_id'], 'Users'));

        return $rules;
    }

我的实体:     FormAssign类扩展Entity     {

    protected $_accessible = [
        'form_id' => true,
        'user_id' => true,
        'assigned_at' => true,
        'updated_at' => true,
        'form' => true,
        'user' => true
    ];
}

我打补丁的实体的输出:

object(App\Model\Entity\FormAssign) {

    'form_id' => (int) 9,
    'user_id' => (int) 30,
    '[new]' => true,
    '[accessible]' => [
        'form_id' => true,
        'user_id' => true,
        'assigned_at' => true,
        'updated_at' => true,
        'form' => true,
        'user' => true
    ],
    '[dirty]' => [
        'form_id' => true,
        'user_id' => true
    ],
    '[original]' => [],
    '[virtual]' => [],
    '[hasErrors]' => false,
    '[errors]' => [],
    '[invalid]' => [],
    '[repository]' => 'FormAssign'

}

0 个答案:

没有答案