ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 如何使用同一个控制器将数据插入到不同的表中?

2019-07-02 13:04:57  阅读:175  来源: 互联网

标签:php mysql laravel-5-2


我正在使用Laravel(来自CodeIgniter),我正在努力获得一个包含填充外键的表.

我有两张桌子:People&友

我的人员表中包含“名字”,“姓氏”等字段.

在我的表单底部,我可以添加一个朋友.每个朋友都可以拥有“名字”,“姓氏”等.我可以添加尽可能多的朋友.

我成功填充了我的People表,然后遍历我的朋友字段以填充我的Friends表.

MyController.php

if ($person->save()) {  // Save the primary record.

    // check if there are any friends to save.
    $friendsArray = array_filter($input['friend']);

    if (empty($friendsArray)) {
        // No friends to insert.
    } else {
        $friend = new Friend();

        $friend->person_id = $person->id;
        $friend->friend_data = json_encode(array('friend' => $input['friend']));

        $friend->save();
    }
}

如果我退出$friend,我看到的一切都正确.例如,

[attributes:protected] => Array
    (
        [person_id] => 4
        [friend_data] => {"friend":{"firstName":"Tyler","lastName":"Durden","address":"12345 Street","city":"My City","state":"CA","zip":"12345"}}
    )

它只是没有插入我的朋友表.我没有收到任何错误,所以我不确定我做错了什么.

编辑

这是我的迁移看起来像创建我的朋友表的内容.

...
Schema::create('friends', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('person_id')->unsigned();
    $table->foreign('person_id')->references('id')->on('people');
    $table->text('friend_data');
    $table->timestamps();
});

编辑2

逐行后,我在网络标签中看到了这个:

Base table or view not found: 1146 Table 'myapplication.friend' doesn't exist

所以这告诉我在某处有拼写问题.当它应该是朋友时,系统正在寻找朋友.

编辑3

这是我朋友模特的样子:

朋友

namespace App;

use Illuminate\Database\Eloquent\Model;

class Friend extends Model
{
    //
}

解决方法:

Laravel使用了很多惯例.其中之一是模型的名称应该是表名的单数.对于你的朋友表,该模型应该是朋友.如果您更喜欢使用自己的命名,可以在模型中设置表格,如下所示:

protected $table = 'friends';

你的命名似乎是正确的,我不确定它为什么不起作用.

标签:php,mysql,laravel-5-2
来源: https://codeday.me/bug/20190702/1356192.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有