Asked Apr 12th, 3:12 PM 155 0 5
  • 155 0 5
+1

lấy giá trị sau khi dùng Model::insert

Share
  • 155 0 5

Hiện tại em đang làm insert nhiều mảng em có dùng Model::insert trong laravel mọi người cho em hỏi làm sao để lấy được giá trị sau khi vừa insert vào database ạ. Vd $test = Test::insert(aray([...],[...])); dd($test); // true Giờ muốn lấy id bản ghi vừa lưu như nào ạ, em cảm ơn

5 ANSWERS


Answered Apr 13th, 3:38 AM
Accepted
+1

@duongvancong Cái này theo mình thì không khả thi bạn ạ.
Về mặt logic bạn có thể dùng theo cách của bạn @simple1805 đã đề cập

Test::insert($array);
$lastIds = Test::orderBy('id', 'desc')->take(count($array))->pluck('id'); 

Tuy nhiên nếu trong 1 thời điểm có 2 người cùng insert vào, thì lúc đó nó sẽ bị sai bạn nhé.
Tuy hơi tù, nhưng để chính xác và đơn giản nhất mình nghĩ bạn nên foreach để create từng thằng một thui 😄

Share
Quiet @simple1805
Apr 13th, 3:53 AM
duong van cong @duongvancong
Apr 13th, 7:49 AM

vâng mình thấy để tối ưu thì chắc phải foreach lưu từng thằng 1 ạ.

0
| Reply
Share
morikun @thanhnguyen
Apr 14th, 12:52 AM

@simple1805 lúc insert làm gì đã có row mà lock bạn nhỉ 😄

0
| Reply
Share
phuong @bocap010203
Apr 26th, 7:34 AM
Answered Apr 13th, 2:06 AM
+2

DB::getPdo()->lastInsertId();

Share
Answered Apr 13th, 12:48 AM
+1

Do kết quả của hàm insert trả về kiểu bool nên chắc phải dùng tips này. Tuy nhiên bạn phải chắc chắn rằng id là kiểu increment

Test::insert($array);
$lastIds = Test::orderBy('id', 'desc')->take(count($array))->pluck('id'); 
Share
duong van cong @duongvancong
Apr 13th, 1:28 AM

Thật tuyệt vời cảm ơn bạn rất nhiều, bạn cho hỏi phần này trong laravel là phần nào ạ. 👍

0
| Reply
Share
Quiet @simple1805
Apr 13th, 1:35 AM

@duongvancong Cái này không có trong tài liệu đâu bạn, với những bài toán kiểu như này thay vì ngồi search tài liệu bạn nên tư duy cách làm nhiều hơn 😂😂

0
| Reply
Share
duong van cong @duongvancong
Apr 13th, 1:45 AM

@simple1805 Vâng mình hiểu được rồi thank bạn rất nhiều ạ.😍👍

+1
| Reply
Share
newbie @nanapham
Apr 13th, 3:04 AM
Answered Apr 12th, 3:31 PM
0

Dùng create

Test::create(aray());

or

$this->_model->create($attributes);
Share
duong van cong @duongvancong
Apr 12th, 3:36 PM

mình insert nhiều mảng thành nhiều row bạn ạ

0
| Reply
Share
Answered Apr 13th, 3:07 AM
0

bạn muốn lấy mảng id vừa insert hay id cuối cùng nhỉ?

Share
duong van cong @duongvancong
Apr 13th, 7:31 AM

mảng id vừa insert bạn ạ

0
| Reply
Share
newbie @nanapham
Apr 14th, 1:59 AM

@duongvancong thế thì mình nghĩ câu trả lời của bác @benkyou chuẩn rùi, còn lấy id cuối cùng thì có thể dùng Test::max('id')

0
| Reply
Share
duong van cong @duongvancong
Apr 14th, 6:50 AM

@nanapham vâng mình làm được rồi ạ

0
| Reply
Share