【问题标题】:Add an array of ids to other table in Laravel在 Laravel 中的其他表中添加一个 id 数组
【发布时间】:2019-12-17 14:19:46
【问题描述】:

我有两个表故事和精选故事,因此我想在一个请求中将几个故事 ID 添加到精选表。该怎么做?

这是我将单个 id 添加到精选故事表的代码。

public function saveFeatured($id)
    {
        # code...
        $story = $this->getById($id);
        $storyId = $story->id;
        $featured = new FeaturedStory();
        $featured->story_id = $storyId;
        $featured->save();
        return "Added to featured StoryList";
    }

【问题讨论】:

  • 为什么不写一个插入查询呢?或类似DB::table('featuredstory')->insert([['story_id' => $id1], ['story_id' => $id2] ]); 或原始查询
  • 你打算如何传递这几个故事 ID?通过请求输入?
  • 是请求输入

标签: php laravel laravel-5


【解决方案1】:

将一个 id 数组传递给函数,然后这样做。

public function saveFeatured($arrayid){
    foreach($arrayid as $key => $item){
        $story = $this->getById($item);
        $storyId = $story->id;
        $featured = new FeaturedStory();
        $featured->story_id = $storyId;
        $featured->save();    
    }
    return "Added to featured StoryList";
}

【讨论】:

    【解决方案2】:

    您可以使用saveMany() 或createMany() 方法。 首先,用几个项目填充一个数组,然后将它们存储在一个雄辩的调用中。 @Cerlin 在问题的评论中也提到了原始插入方法。

    我不知道您是如何获得输入的以及“精选”的确切含义,但它可能看起来像:

    $story->featured()->saveMany([
        new App\Featured(['id' => 1, 'title' => 'First story']),
        new App\Featured(['id' => 2, 'title' => 'Another story']),
    ]);
    

    这里的问题非常相似:https://stackoverflow.com/a/33769331/272885

    【讨论】:

    • 嘿输入将来自邮递员作为请求和控制器 $story = $request->all();
    • 但我现在面临的一个问题是,只有当我尝试在邮递员 x-www-form 中发送超过 1 个 id 时,它才会处理最后一个值
    • @John 你如何命名输入以及你在分配什么
    【解决方案3】:

    看看这个:has-many-create-relationship

    在您的 Story.php 模型中:

    public function featuredStories()
    {
        return $this->hasMany(\App\FeaturedStory::class, 'story_id', 'id');
    }
    

    在您的 FeaturedStory.php 模型中:

    public function story()
    {
        return $this->belongsTo(\App\Story::class);
    }
    

    然后您就可以轻松创建featured_stories

    $array = ... # your featured_stories attributes array.
    $story->featuredStories()->createMany($array);
    

    这会自动将story_id填入FeaturedStory

    【讨论】:

    • 你的意思是 ->createMany() 吗? @TsaiKoga
    • @John 对不起,我的错误。我已经修复了语法错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2021-01-01
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多