簡體   English   中英

無需數據庫的 Eloquent 查詢(從外部 API 檢索數據)

[英]Eloquent queries without database (data is retrieved from external API)

我有一個 Laravel Web 應用程序 (website.nl) 和一個 Laravel API (api.website.nl)。

當用戶使用網站上的登錄表單登錄時。 對 API 完成發布請求。 當登錄請求成功時,令牌和用戶對象以 JSON 字符串的形式發回。 登錄方法如下所示。

public function login(Request $request)
{
    $email = $request->input('email');
    $password = $request->input('password');

    $response = $this->client->request('POST', self::$apiRootUrl . '/login', [
        'headers'     => [
            'Accept' => 'application/json',
        ],
        'form_params' => [
            'email'    => $email,
            'password' => $password
        ],
    ]);

    $result = json_decode($response->getBody()->getContents());

    if (isset($result->success->token))
    {
        $user = User::create([
            'id'    => $result->success->user->id,
            'name'  => $result->success->user->name,
            'email' => $result->success->user->email,
            'password' => $password
        ]);
        Auth::login($user);
        $this->apiToken = $result->success->token;

        return $this->sendLoginResponse($request);
    }

    return $this->sendFailedLoginResponse($request);
}

我希望這個登錄功能盡可能愚蠢,這意味着讓 API 確定這是否是一個有效的登錄請求。 此方法僅傳遞參數。

主網站不應有數據庫。 它僅使用 API 登錄、獲取令牌並使用該令牌執行請求以收集用戶在主網站儀表板上查看的數據。

出於這個原因,我的問題是:如何存儲從 API 檢索到的 User 對象,使其像 Eloquent 模型一樣可查詢。 但無需將其存儲在數據庫中。 同樣,主網站不應該需要數據庫。 它僅與 API 通信以獲取其數據。

我希望這個問題有意義,如果沒有,請詢​​問更多詳細信息。

我不想在主網站上創建帶有遷移的重復數據庫。 因為那是.api子域的工作。 此外,所有模型都在一個會話中使用。 永遠不會存儲更長的時間,因為它也位於.api子域的 store 方法中。

這將需要您為 Eloquent 編寫自己的語法,這是您正在使用的 API 的 ActiveRecord 實現。 理論上是可以的,實際上需要做很多工作。

在此處查看 Laravel 如何實現其當前支持的數據庫類型。 https://laravel.com/api/5.8/Illuminate/Database/Schema/Grammars.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM