@hollanditkzn

Как сохранить в бд данные из связанной таблицы из запроса?

У меня такая проблема в том что есть заказ и клиент, мне нужно в заказе вбить id клиента который я получил, только не работает когда я пытаюсь присобачить полученный от моделе client хочу сохранить в таблицу заказах в поле id_client.
Вот что приходит мне в post запросе(дебаг из yii2)
$_POST
Name Value
_csrf-frontend 'dmZFSG95NmQkSzA9N0B1PCQ0BgouCGI8HjZ3GA5OWA4PUw0ZPA4HVg=='
Zakaz [
'description' => 'ТестПробная'
'number' => '1'
'information' => ''
'file' => ''
'name' => 'Иван'
'phone' => '82147483647'
'email' => ''
'oplata' => '20'
'fact_oplata' => '10'
'srok' => '2017-07-30 18:20:00'
'status' => ''
'prioritet' => ''
]
Client [
'id' => '41'
]

srok-zakaz-srok-disp '30 Июл 2017 18:20'
И в контроллере я пытался указать
public function actionUpdate($id)
    {
        $model = $this->findModel($id);
        $client = new Client();
if ($model->load(Yii::$app->request->post())) {
            $model->id_client = $client->load(Yii::$app->request->post());//Сюда должно вставиться из запроса 41, который получил от post-запроса
         ...
            $model->validate();
            if (!$model->save()) {
                print_r($model->getErrors());
            } else {
                $model->save();
            }
        }
        return $this->render('update', [
            'model' => $model,
            'client' => $client,
        ]);
}

Если так писать то пишет ошибку
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`crm`.`zakaz`, CONSTRAINT `zakaz_ibfk_6` FOREIGN KEY (`id_client`) REFERENCES `client` (`id`) ON UPDATE CASCADE)
The SQL being executed was: UPDATE `zakaz` SET `status`=0, `oplata`=20, `fact_oplata`=10, `number`=1, `phone`=2147483647, `id_client`=1 WHERE `id_zakaz`=1419

И тут я не пойму как вставить полученный из post запроса id
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
почитайте внимательно что делает метод load, этот код не имеет смысла
$model->id_client = $client->load(Yii::$app->request->post());

замените его на
$model->id_client = ArrayHelper::getValue(Yii::$app->request->post('Client'), 'id');
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы