gpt4 book ai didi

mysql - 记录后立即访问存储在DB表中的 `latest`记录

转载 作者:行者123 更新时间:2023-11-29 06:28:14 26 4
gpt4 key购买 nike

在 Laravel 中,将最后一行记录到数据库表后,我可以通过调用 latest() 查询在记录后立即安全地访问相同的记录数据吗?因为其他用户的交易可能同时发生,而且可能不再是最后一条记录了?

编辑:

例如:

Public function StoreNotif($data){

auth()->user()->Notif()->create(store $data here..)

}

Public function SendNotif(){

$data="123";

$this->StoreNotif($data)

event(new Notification(stored Notif instance?));

}

最佳答案

不,您不能依赖数据库从当前脚本返回记录。

->latest() 方法始终会对最近 created_at 日期的记录进行排序。
https://laravel.com/docs/6.x/queries#ordering-grouping-limit-and-offset

但是您没有提供任何代码或解释来解释为什么这是一个问题。如果刚刚创建了一条新记录,为什么还需要再次查询呢?您应该已经有权访问该模型的实例。

编辑:我进行了一些编辑,以演示如何将模型从 Controller 传递到评论中引用的事件。如果您需要更具体的帮助,请发布您的代码。

SomeController.php

function store()
{
$model = Model::create([
'some_data' => 1
]);

// fire an event with the newly created model
event(new SomeEvent($model));

dd($model);
}

------------------------

Model {
// ...
attributes: [
'id' => 101,
'some_data' => 1
'created_at' => '2019-10-06 12:48:01',
'updated_at' => '2019-10-06 12:48:01',
]
// ...
}

SomeEvent.php

<?php

namespace App\Events;

use App\Model;
use Illuminate\Queue\SerializesModels;

class SomeEvent
{
use SerializesModels;

public $model;

public function __construct(Model $model)
{
$this->model = $model;

// ...
}
}
<小时/>

编辑:根据新添加的代码,您只需将新模型传递回原始方法即可。你可以做这样的事情。

Public function StoreNotif($data)
{
// add a return statement
return auth()->user()->Notif()->create(store $data here..);
}

Public function SendNotif()
{
$data="123";

// store the returned data to a variable
$model = $this->StoreNotif($data);

// call the event with the model instance
event(new Notification(model));
}

关于mysql - 记录后立即访问存储在DB表中的 `latest`记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58253701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com