[英]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.