当前位置: 首页 > 知识库问答 >
问题:

在laravel中保存多个记录

傅雪松
2023-03-14

我试图保存多个记录通过

AppSettings::create(
    [
        'name' => 'mail_host',
        'type' => $emailsettingstype->id,
        'value' => '',

    ],
    [
        'name' => 'mail_port',
        'type' => $emailsettingstype->id,
        'value' => '',    
    ],
    [
        'name' => 'mail_username',
        'type' => $emailsettingstype->id,
        'value' => '',
    ],
);

但是从上面来看,只创建了第一个数组。我哪里做错了?感谢您的帮助。

共有3个答案

莫英喆
2023-03-14

创建多个方法createMany在关系检查参考中提供,该链接和本文档来自laravel

到目前为止,我的例子是这样的。

我有两个模型定价可用性服务模型

定价模型

namespace App;
use Illuminate\Database\Eloquent\Model;
class Pricing extends Model
{
    protected $fillable = ["name", "price"];
    public function available(){
        return $this->hasMany(AvailableService::class, "pricing_id", "id");
    }
}

可用服务模式如下所示

namespace App;
use Illuminate\Database\Eloquent\Model;
class AvailableService extends Model
{
    protected $fillable = ["pricing_id", "service_id"];
    public function service(){
        return $this->belongsTo(Service::class, "service_id", "id");
    }
}

因此,createMany操作如下所示

$insertMany = Pricing::create(['name'=>request('name')]);
$insertMany->available()->createMany([
      ['service_id'=>1],
      ['service_id'=>2],
      ['service_id'=>3],
      ['service_id'=>4],
      ['service_id'=>5],
]);

它适用于,你也可以试一试。谢了

严成礼
2023-03-14

您可以只使用雄辩::插入()链接如下:

AppSettings::insert([
    [
        'name'=>'mail_host',
        'type'=>$emailsettingstype->id,
        'value'=>'',

    ],
    [
        'name'=>'mail_port',
        'type'=>$emailsettingstype->id,
        'value'=>'',

    ],
    [
        'name'=>'mail_username',
        'type'=>$emailsettingstype->id,
        'value'=>'',
    ],
]);

上面的问题是它不会更新时间戳,在这里找到例子

丰辰沛
2023-03-14

我想这应该可以

AppSettings::createMany([
    [
        'name'=>'mail_host',
        'type'=>$emailsettingstype->id,
        'value'=>'',

    ],
    [
        'name'=>'mail_port',
        'type'=>$emailsettingstype->id,
        'value'=>'',

    ],
    [
        'name'=>'mail_username',
        'type'=>$emailsettingstype->id,
        'value'=>'',
    ],
]);

确保传递的是数组数组,而不是数组参数。

UPDATE,您可以使用::模型插入(),尽管根据我所读到的,该方法不会创建/更新时间戳。

 类似资料:
  • 我希望能够在一个表中的一行中保存多行,我已经了解到这可以使用方法来完成,但是我在尝试使用该方法时遇到了这个错误 SQLSTATE[HY000]:一般错误:1364字段“名称”没有默认值(SQL:insert into(,)值(2019-01-3007:46:192019-01-3007:46:19)) 我的代码 我正在使用Laravel v5.7.21 更新,在我的PersonRole中我添加了这

  • 我有一个表格: 以及存储两个表单字段的方法: 但是,只有“name”保存到db表中。任务表有两个列名 这是桌子: 还选中了“手动创建”选项: 输出: 谢谢

  • 我想在一个外键中保存多个关系对象,但不幸的是,我在下面附加了一个错误。我的数据库中已经有ID为189的对象 错误: views.py 序列化程序。派克 模型。派克

  • 我正在学习cakephp,已经做了很多。我问这个问题的唯一原因是cakePHP中的文档可能是错误的。我不能从文档或过去的stackoverflow帖子中看到为什么(子)教师表不保存(父)用户表中id表中的user_id。我得到没有错误,但user_id是0在教师表,所以它不捡起它从用户表。我在两个模型上有一对一的关系。我只是测试保存超过2个模型,我有一个用户和老师。我只是在表单中输入数据,并创建一

  • 我有一个由3列组成的用户设置表(或见下图):,,。 然后我有两个函数,一个保存时区,一个保存时间格式。 当我第一次运行函数时(每个函数都是通过ajax调用独立运行的),我得到了正确的结果: 然后,当我尝试更新

  • 我正在做一个使用Spring web Flux和mongo DB的项目,我对反应编程和WebFlux非常陌生。 我有使用一个服务保存到3个集合的场景。对于每个集合,im使用序列生成id,然后保存它们。我有FieldMaster,上面有列表,每个字段信息都有列表。我需要保存FieldMaster、FileInfo和FieldOption。下面是我正在使用的代码。代码仅在调试模式下运行时才起作用,否则