Laravel:InsertgetId并显示结果

时间:2014-07-24 06:42:27

标签: php laravel laravel-4

我想在我的数据库表中插入一些记录并使用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

2 个答案:

答案 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();