aws mysql是否正在缓存数据?拉威尔5

lf5gs5x2  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(252)

我正在创建一个简单的api端点,它返回一个事件的访问代码。
如果事件没有访问代码,那么它将被分配一个并保存在数据库中。然后,它检查当前是公共的还是私有的。如果是私有的,则返回访问代码;如果是公共的,则返回空字符串。
这是端点控制器:

public function getAc($eventId) {
    // Pull event
    $event = $this->eventService->api->getEventForce($eventId);

    // If no access code for the event, generate one and update event record accordingly
    if ($event->access_code == null) {

        $access_code = $this->generateAccessCode();
        DB::update('update events set access_code = ? where id = ?', [$access_code, $eventId]);

        // Load updated event from DB.
        $event = $this->eventService->api->getEventForce($eventId);
    }

    // Is the event currently private? return access code
    if ($event->privacy=='private') {
        return $event->access_code; // HERE: value comes back from the API but on MySQL Workbench it's still null.
    }

    // Is it public ? return empty string.
    else {
        return '';
    }
}

我的问题是,即使一切正常。当创建access\u代码时,它确实会从api返回。
但是,当我检查mysql工作台(连接到aws示例)上的记录时,它仍然是空的!事件,但我使用api端点将其作为非空值从数据库中提取。

xurqigkl

xurqigkl1#

你的代码有点混乱。从调试来看,我建议检查您的api以解决这个问题。从我所看到的情况来看,你正在这样做:
向api请求id为1的事件
检查事件是否有参数
如果没有参数,则使用本地数据库更新
所以我要问的是,如果问题出在api上,为什么要使用db的本地示例进行更新?此外,是否可以使用事件解决此问题(我要给你们的班级打个电话,而不是事件,这样就不会搞混了)
例如:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Party extends Model {
    public $table = 'parties';
    public $fillable = [];

    public static function boot() {
        parent::boot();

        static::creating(function($party) {
            //create some fancy access code
            $access_code = 'heyyyy';
            //Check not manually set 
            if (!isset($party->attributes['access_code']) || is_null($party->attributes['access_code'])) {
                $party->access_code = $access_code;
            }
        }
    }
}

现在每次你用 Party::create(); 或者 $party = new Party; $party->save(); 这个 creating 如果您没有像这样手动设置,事件将获取保存并分配访问代码 $party->access_code = 'you can\'t come'; .
反正这是我的想法。然而,在你眼前的情况下,我认为你需要问自己更多的问题,比如:
我使用的laravel示例中的db对象是否可以访问数据库来保存所述对象?
我是否需要调用api来更新实体/模型?
如果我用的是 \DB::update 调用是否具有与我的api相同的凭据?
如果这是一个命令或作业,我的代码更改会影响它吗?我是否需要重新启动supervisor/cron命令来重新示例我的代码?
谁编写了这个api?是否足够可靠使用?有文件吗?

相关问题