从foreach循环内的数据库填充数组并稍后获取它

时间:2017-04-03 13:29:37

标签: php arrays database laravel

我想用一个从db表中获取的id填充一个数组。后来我想从数组中获取这些ID以插入到另一个db表中。以下是代码:

 public function storeBaritems()
{
    $id = Auth::user()->id;
    $bartypearray = array();
    $bartypes = request('select1');     // <select id="select1" name="select1[]"
    foreach ($bartypes as $type) {
        $bartypearray[] = Bartype::select('bartype_id')
                            ->where('bar_type_name','like',$type)
                            ->where('restaurant_id', $id)
                            ->get();
    }
    $baritems = request('itemname');   //<input type="text" class="hookah-field" name="itemname[]">
    $descriptions = request('description');  //<input type="text" class="hookah-field" name="description[]">
    $quantity = request('quantity'); //<input type="text" class="hookah-field" name="quantity[]">
    $prices = request('price');  //<input type="text" class="hookah-field" name="price[]">
    $i = 0;
    foreach ($bartypearray as $item) {
            Bar_menu::create([
                'item_name'=>$baritems[$i],      
                'description'=>$descriptions[$i], 
                'quantity'=>$quantity[$i],
                'price'=>$prices[$i],
                'res_id'=>$id,
                'type_id'=>$item->bartype_id
                ]);
            $i += 1;
    }
} 

HTML表单动态创建具有相同&#34; name&#34;的新字段。属性。现在,我收到错误 - &#34; Collection.php第1527行中的异常: 此集合实例上不存在属性[bartype_id]。&#34;任何解决方案都会有帮感谢

2 个答案:

答案 0 :(得分:1)

在此处进行更改,

$bartypearray[] = Bartype::select('bartype_id')
                            ->where('bar_type_name','like',$type)
                            ->where('restaurant_id', $id)
                            ->first();

get()将返回二维数组,first()将返回一维数组

答案 1 :(得分:0)

您可以使用pluck方法。

$bartypearray = Bartype::where('bar_type_name','like',$type)
  ->where('restaurant_id', $id)
  ->pluck('bartype_id');

使用此方法不需要第一个foreach

顺便说一句。我强烈建议你进入all collection methods