提交表单后,Laravel 将 ID 从一个表插入到另一个表

Posted

技术标签:

【中文标题】提交表单后,Laravel 将 ID 从一个表插入到另一个表【英文标题】:Laravel Insert ID from one table to another after submition of form 【发布时间】:2020-03-11 10:11:37 【问题描述】:

基本上我有三张桌子,

短信内容, 短信内容城市, sms_content_categories,

sms_content 在其他两个表中都有foregin 键。我想一次将记录保存在这些表中。 就像我想将 sms_content_id 保存在 sms_content_cities 和 sms_content_categories 的其他表中。

这是我的代码:

    $model = new SmsContent();
    $model->version = 0;
    $model->sms_from = 1;
    $model->sms_text = $inputs['sms_text'];

    $date = strtotime($inputs['start_date']);
    $startDate = date("Y-m-d H:i:s", $date);
    $noteID = $date;
    $model->start_date = $startDate;

    $endDate = date("Y-m-d", strtotime($inputs['end_date']));
    $model->end_date = $endDate;
    $model->title_audio = (isset($inputs['title_audio'])) ? $inputs['title_audio'] : "";
    $model->audio = (isset($inputs['audio'])) ? $inputs['audio'] : "";
    $model->enabled = 1;
    $model->ivr_enabled = 1;
    $model->note_id = DB::raw($noteID);
    $model->sort_order = 0;
    $model->save();

此代码将我的值保存在 sms_content 表中,但我不知道如何将他的值保存在其他表中,就像我想将 sms_content "Id" 作为外键保存在其他表中。

【问题讨论】:

【参考方案1】:

在数据库中创建记录后,您可以立即访问其 id,如下所示:

$model->id

现在您可以访问它,只需创建其他 Model 的新对象并将其保存在那里。

【讨论】:

【参考方案2】:

只要您执行$model->save()id 就会保存在$model 集合中。您只需使用 $model->id 即可访问它。 在 save() 语句之后尝试dd($model->id);

【讨论】:

【参考方案3】:

您可以在将模型属性保存到数据库后立即访问它们。为了使用您需要的 id 数据更新您的其他模型,您可以简单地执行以下操作:

$model1 = new SmsContent();
$model1->version = 0;
$model1->sms_from = 1;
//... and so on
$model1->save();

$model2 = new Model2();
$model2->sms_content_id = $model1->id;
//... and so on
$model2->save();

$model3 = new Model3();
$model3->sms_content_id = $model1->id;
//... and so on
$model3->save();

【讨论】:

很高兴我能帮上忙。如果答案引导您找到您的解决方案,请将其标记为已接受,以便其他人可以轻松找到它。

以上是关于提交表单后,Laravel 将 ID 从一个表插入到另一个表的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 中通过 ajax 提交简单的表单,之后,将新行插入到现有表中,其中包含来自提交表单的数据

Laravel错误将数据从另一个表插入到表中

表单提交后 POST 方法返回 404 - Laravel

Laravel 表单一次性插入

laravel中,提交表单后给出提示例如添加成功,添加失败等等

Laravel从表单输入中将“null”插入数据库。