如何在Laravel中的Query Builder数组中使用foreach

时间:2017-01-02 11:53:00

标签: php arrays laravel foreach syntax

我在foreach中遇到语法错误。在Query Builder数组中使用foreach的正确方法是什么,代码如下:

public function postItems(Request $request, $id){
    $itemid = \DB::table('items_tables')->where('category_id','=',$id)->get();       

    DB::table('store_items')->insert(
    array('user_id' => \Auth::user()->id,

        foreach($itemid as $itemids){   
          'items' => $itemids->name,
        }

          'store_id' => $id)
    );

    return view('actions.itemstore');
}

在foreach中发生语法错误如下:

  

解析错误:语法错误,意外' foreach' (T_FOREACH),期待')'

$ itemids->名称变量具有众多价值。我需要循环使用它。

2 个答案:

答案 0 :(得分:0)

这应该是这样的:

public function postItems(Request $request, $id){
    $itemid = \DB::table('items_tables')->where('category_id','=',$id)->get();
    foreach($itemid as $itemids) {
        $data_to_insert = [
            'user_id' => \Auth::user()->id,
            'store_id' => $id,
            'items' => $itemids
        ];
        DB::table('store_items')->insert($data_to_insert);
    }

    return view('actions.itemstore');
}

答案 1 :(得分:0)

如果您想要使用完整的Laravel,可以使用集合来编写它:

public function postItems(Request $request, $id)
{
    collect(\DB::table('items_tables')->where('category_id','=',$id)->get())->each(function ($item) use ($id) {
        \DB::table('store_items')->insert([
            'user_id' => \Auth::user()->id, 
            'store_id' => $id, 
            'item_name' => $item->name
        ]);
    });

    return view('actions.itemstore');
}

如果你使用的是Laravel 5.3,你也可以放弃那个collect(),因为现在我们甚至在使用DB时也会收集它们。