我想将一些记录插入到我的数据库表中,并使用 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);
刀片视图
@if(isset($name) && $name != '')
{{dd($name)}}
@endif
我收到此错误
ErrorException
preg_replace(): Parameter mismatch, pattern is a string while replacement is an array
您可以使用
whereIn
进行精确查询。 between
应该可以工作,但很容易出错,因为同时可能会插入另一行:
$ids = [];
foreach (..)
{
$ids[] = DB::table('infile')->insertGetId(...);
}
$data = DB::table('infile')->whereIn('id', $ids)->get();
我最终使用了不同的方法
我在执行插入之前找到了最大值
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();
$id = DB::table('user')->insertGetId(['name'=>"test"]);