7

我有以下查询

public static function createConversation( $toUserId )
{

    $now = date('Y-m-d H:i:s');
    $currentId = Auth::user()->id;

    $results = DB::table('pm_conversations')->insert(
        array( 'user_one' => $currentId, 'user_two' => $toUserId, 'ip' => Request::getClientIp(), 'time' => $now )
    );

    return $results;

}

我将如何返回刚刚插入的行的 id?

干杯,

4

4 回答 4

13

与其做一个原始查询,不如创建一个模型......

称之为对话,或者其他什么...

然后你就可以做......

 $result = Conversation::create(array( 'user_one' => $currentId, 'user_two' => $toUserId, 'ip' => Request::getClientIp(), 'time' => $now ))->id;

这将返回一个 id ...

或者,如果您使用的是 Laravel 4,则可以使用 insertGetId 方法...在 Laravel 3 中,我相信它的 insert_get_id()

 $results = DB::table('pm_conversations')->insertGetId(
    array( 'user_one' => $currentId, 'user_two' => $toUserId, 'ip' => Request::getClientIp(), 'time' => $now )
);

此方法要求表的 id 是自动递增的,因此请注意...

最后一种方法,是你可以只返回最后插入的 mysql 对象....

像这样...

 $result = DB::connection('mysql')->pdo->lastInsertId();

所以如果你选择最后一条路...

会过去的...

public static function createConversation( $toUserId )
 {

$now = date('Y-m-d H:i:s');
$currentId = Auth::user()->id;

$results = DB::table('pm_conversations')->insert(
    array( 'user_one' => $currentId, 'user_two' => $toUserId, 'ip' => Request::getClientIp(), 'time' => $now )
 );


 $theid= DB::connection('mysql')->pdo->lastInsertId();
 return $theid;

 }

我个人会选择第一种创建实际模型的方法。这样,您实际上可以拥有相关项目的对象。然后不是创建一个模型,只是 save()....你调用 YourModel::create() ,这将返回最新模型创建的 id

于 2013-06-17T03:22:56.127 回答
13

您可以使用DB::getPdo()->lastInsertId().

于 2014-01-02T07:14:10.870 回答
10

使用 Eloquent,您可以:

$new = Conversation();
$new->currentId = $currentId;
$new->toUserId = $toUserId;
$new->ip = Request::getClientIp();
$new->time = $now;

$new->save();

$the_id = $new->id; //the id of created row
于 2014-04-01T13:01:32.587 回答
0

我让它工作的方式是我运行了一个插入语句,然后我返回了插入的行 ID(这是从一个自学项目到开票的):

        WorkOrder::create(array(
        'cust_id' => $c_id,
        'date' => Input::get('date'),
        'invoice' => Input::get('invoice'),
        'qty' => Input::get('qty'),
        'description' => Input::get('description'),
        'unit_price' => Input::get('unit_price'),
        'line_total' => Input::get('line_total'),
        'notes'     => Input::get('notes'),
        'total' => Input::get('total')
    ));

    $w_id = WorkOrder::where('cust_id', '=', $c_id)->pluck('w_order_id');
    return $w_id;
于 2014-07-03T06:53:45.960 回答