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

使用できますDB::getPdo()->lastInsertId()

于 2014-01-02T07:14:10.870 に答える
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 に答える
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 に答える