php - 在 Laravel Eloquent get() 查询中插入未定义的变量
问题描述
我在 Laravel 中有两个模型,我使用 Laravel 作为 API。
Wallet = [name, wallet_category_id, user_id]
Wallet_Category = [id, name]
我在控制器中使用 get() 调用所有钱包,如何在输出中添加钱包类别名称?
Wallet::where('user_id', $request->get('user_id'))->get()
输出将类似于:
[
{
"id": 12,
"user_id": 2,
"name": "wallet1",
"wallet_category_id" : 1,
"created_at": "2020-03-09 22:40:29",
"updated_at": "2020-03-09 22:40:29"
},
{
"id": 13,
"user_id": 2,
"name": "wallet2",
"wallet_category_id" : 2,
"created_at": "2020-03-10 13:57:37",
"updated_at": "2020-03-10 13:57:37"
}
]
我想要这样的输出:
[
{
"id": 12,
"user_id": 2,
"name": "wallet1",
"wallet_category_id" : 1,
"created_at": "2020-03-09 22:40:29",
"updated_at": "2020-03-09 22:40:29",
"category" : "cat_1"
},
{
"id": 13,
"user_id": 2,
"name": "wallet2",
"wallet_category_id" : 2,
"created_at": "2020-03-10 13:57:37",
"updated_at": "2020-03-10 13:57:37",
"category" : "cat_2"
}
]
可能吗?
之前谢谢。
解决方案
关系
在Wallet
模型中建立关系
class Wallet extends Model
{
public function walletcategory()
{
return $this->belongsTo('App\Wallet_Category','wallet_category_id','id');
}
}
现在在控制器中
$wallets = Wallet::with('walletcategory')->where('user_id', $request->get('user_id'))->get();
foreach($wallets as $wallet){
$wallet->walletcategory->name
}
加入
如果您想通过使用 join 来获取它,请按照以下查询。
Wallet::select('wallet.*','wallet_category.name')->leftjoin('wallet_category','wallet_category.id','wallet.wallet_category_id')->where('wallet.user_id', $request->get('user_id'))->get();
推荐阅读
- reactjs - 在 SPA 中刷新 JWT 的最佳实践?
- csv - 使用 gsutil 从 CSV 下载所有行
- relational-database - 关系代数和关系微积分
- node.js - 找不到电子 sqlite3 包应用程序模块
- progress-bar - 显示角度材料进度条并禁用页面的所有内容,直到页面加载
- mysql - 在mysql中按结果更新/插入另一个表的组的列值
- ruby-on-rails - filterrific : 如何用多个词搜索查询?
- java - 为相同的休息端点提供两种方法,但在 Spring 中的 PathVariable 中有所不同
- android - Android 分页库重试 loadRange() 或 loadAfter()
- ruby-on-rails - ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):Rails 5