Cakephp 3 формы, вставить в иностранный ключ

0

Вот мои трески:

<?= $this->Form->create('Posts', array('url' => array('controller' => 'MyController', 'action' => 'index')));?>
                        <?= $this->Form->input('title', array('type'=>'title','class'=>'form-control mr-sm-2'));?>
                        <?= $this->Form->textarea('text', array('type'=>'text','rows' => '3','class'=>'form-control'));?>
                        <?= $this->Form->submit('Posten', array('class'=>'btn btn-outline-success my-2 my-sm-0','style'=>'float:right'));?>
                    <?= $this->Form->end();?>

И вот мой контроллер:

 $post = $this->Posts->newEntity();
    if ($this->request->is('post')) {
        $post = $this->Posts->patchEntity($post, $this->request->getData());
        debug($post);
        if ($this->Posts->save($post)) {

        $this->Flash->success(__('You have posted something.'));
        }


        return $this->redirect(['action' => 'index']);
    }else {
        $this->Flash->error(__('Error, plase check your'));
    }

Проблема заключается в проблеме:

INSERT INTO posts (title, text) VALUES (:c0, :c1);

Но мне нужно:

INSERT INTO posts (title, text,user_id,picture_id) VALUES (a,b,$user_id,$picture_id);

Preoblem - это то, что мне нужно вставить его в контроллер, который не отображается. Кто-нибудь может мне помочь?

Теги:
cakephp
cakephp-3.0

1 ответ

0

Предполагая, что $user_id и $picture_id являются переменными, которые были объявлены в вашей функции контроллера, и были надлежащим образом проверены на предмет безопасности, если они поступают с пользовательского ввода (например, если они указаны в URL-адресе, вы подтвердили, что они в порядке и не просто доверяли им, потому что URL-адреса, которые вы даете людям, ссылки всегда действительны), тогда должно работать следующее:

$post = $this->Posts->patchEntity($post,
    array_merge($this->request->getData(), compact('user_id', 'picture_id'))
);
  • 0
    это не работает И где я должен положить переменные $ user_id и $ picture_id?
  • 0
    У вас еще нет этих переменных? Трудно сказать, вы не включили всю функцию. И вы сказали, что хотите, чтобы они были сохранены в записи. Поэтому я предположил, что они уже существуют. Вам нужно будет предоставить более подробную информацию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню