我想在我的数据库表中插入一些记录并使用insertgetid功能,将这些结果返回到我的刀片视图。
控制器
$grids[] = array();
foreach($c as $key) {
$grids[] = DB::table('infile')->insertGetId(
array( 'href' => $key,
'creator_id' => $id,
'random' => substr(str_shuffle("aBcEeFgHiJkLmNoPqRstUvWxYz0123456789"),0, 9))
);
}
$name[] = array();
foreach($grids as $id){
$name = DB::table('infile')->where('id', '=', $id)->first();
}
return View::make('Home')->withName($name);
Blade View
@if(isset($name) && $name != '')
{{dd($name)}}
@endif
我收到此错误
ErrorException
preg_replace(): Parameter mismatch, pattern is a string while replacement is an array
答案 0 :(得分:1)
您可以使用whereIn
进行精确查询。 between
应该有效,但它容易出错,因为在此期间可能会插入另一行:
$ids = [];
foreach (..)
{
$ids[] = DB::table('infile')->insertGetId(...);
}
$data = DB::table('infile')->whereIn('id', $ids)->get();
答案 1 :(得分:0)
我最终使用了不同的方法
我在执行插入之前找到了最大id
,然后在插入后找到了最大id
,然后使用了中间来获取数据。
$max = DB::table('infile')->max('id');
foreach($c as $key) {
DB::table('infile')->insertGetId(
array( 'href' => $key,
'creator_id' => $id,
'random' => substr(str_shuffle("aBcEeFgHiJkLmNoPqRstUvWxYz0123456789"),0, 9))
);
}
$max2 = DB::table('infile')->max('id');
$data = DB::table('infile')->whereBetween('id', array($max, $max2))->get();