如何从插入方法laravel 5.1中获取最后一个插入的id

时间:2015-12-03 11:43:43

标签: php mysql laravel-5.1

我在Model的数据库中插入了值,这里是代码:

控制器:

class MovieController extends Controller
{   
    /**
     * Create a new movie model instance.
     *
     * @return void
     */
    public function __construct(MovieModel $movie){
        $this->movie = $movie;
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(MovieRequest $request)
    {               
        if($this->movie->createMovie($input)){
            return Redirect::back()->with('message', '<strong>' . $input['name'] . '</strong> movie has been created');
        }
    }
}

型号:

class Movie extends Model
{   
    public function createMovie($input) {
        return $this->insert($input);   // I need to return last inserted id here
    }

}

通过使用此插入方法,如何获取最后插入的ID?

3 个答案:

答案 0 :(得分:1)

如果您的表格中包含autoincrementid字段,请尝试使用insertGetId函数,该函数将返回上次插入的行ID

return DB::table('movie')->insertGetId(
    //pass an array parameter to this function
);

Laravel Query Builder Reference

答案 1 :(得分:1)

在您的模型中,添加以下代码:

public function createMovie($input) {
    $id = $this->insertGetId(
        $input
    );

    return $id;
}

看,如果有帮助。

答案 2 :(得分:0)

试试这个:

class Movie extends Model
{   
    public function createMovie($input) {
        $insertedId = $this->insert($input);   // I need to     return last inserted id here
       $theId = (int) $inserted->id;

        return $theId;
    }

}

这假设&#39; $ this-&gt; insert($ input);&#39;是您正在执行的查询。

为了让您了解直接从执行的查询中获取ID:

$qry = $this->movie->createMovie($input)
$insertedId = $qry->id