我有以下查询
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?
干杯,
答案 0 :(得分: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;
}
我个人会选择第一种创建实际模型的方法。这样,您实际上可以拥有相关项目的对象。 然后,而不是创建一个模型,只需保存()....你将调用YourModel :: create(),并返回最新模型创建的id
答案 1 :(得分:13)
您可以使用DB::getPdo()->lastInsertId()
。
答案 2 :(得分: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
答案 3 :(得分:0)
我使用它的方式是我运行了一个insert语句,然后我返回了插入的行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;