簡體   English   中英

Laravel雄辯的關系沒有鑰匙

[英]Laravel Eloquent Relationship without key

我如何渴望雄辯地加載另一個模型? 關系不是傳統意義上的關系,而是必須的。

我有一個users表和一個target_types表。 每個user將具有所有相同的target_types 所以,無論target_types存在於target_types表,將適用於所有users 因此,不需要外鍵類型的關系。

我意識到我可以沿查詢生成器路線走,但是理想情況下,我希望能夠執行以下操作:

User::with('target_types')->get();

有任何想法嗎?

正如Felippe Duarte所建議的那樣,您只需將兩個集合都返回到view / API: $users$targetTypes

應用程序/ HTTP /控制器/ SomeCoolController.php

public function index(Request $request)
{
    // get your users
    $users = User::all();
    // get your target types
    $targetTypes = TargetType::all();


    // return them to your front-end
    return response([
        'data' => [
            'users' => $users,
            'target_types' => $targetTypes
        ]
    ], 200);

    // or in case you have a view
    // return view('my_cool_view', ['users' => $users, 'targetTypes' => $targetTypes]);

}

替代

您說所有用戶的targetTypes都相同。 以防這種類型不經常更改。 為什么不將它們存儲在模型中?

應用程序/ user.php的

public function getTargetTypesAttribute()
{
    return ['my', 'list', 'of, 'target', 'types'];
}

然后,您可以在查詢用戶時使用它:

$user = User::first();
dd($user->target_types);
// this will output the list of target types.

您可以像這樣在用戶模型中“偽造”關系:

//in User model
public function targetTypes(){

    return TargetType::where("deleted_at", "<>", "NULL");

}

然后,您可以在控制器中與用戶一起調用它,如下所示:

User::with('targetTypes')->get();

暫無
暫無

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

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