如何解决如何从单个对象中的 Laravel 关系中获取数据?
在用户模型中这是我的关系
public function User() {
return $this->belongsTo('App\models\Users','UserId');
}
在钱包模型中这是我的关系
public function Wallet() {
return $this->HasOne('App\Models\Wallet','UserId','Id');
}
但是当我运行查询时
$user = Users::with([
'Wallet' => function($query){
$query->select('test_userwallet.UserId','test_userwallet.CoinBalance');
}
])->get()->toArray();
{
"Id": 1,"UID": "8oDI617ZlsInXtUkRpMqVKo5J4XPzI12567","CountryCode": "91","Status": "active","TimeStamp": "2021-02-12 06:43:08","wallet": {
"UserId": 1,"CoinBalance": 6
}
这完全没问题,但我猜有什么方法或方法可以让我以这种格式获取数据
{
"Id": 1,"UserId": 1,"CoinBalance": 6
}
就像在单个对象中一样,因为我在 apis 中工作,所以我想这样做
注意:仅使用查询或雄辩
解决方法
您可以使用 join:
$user = Users::query()->leftJoin('test_userwallet','test_userwallet.UserId','users.id')
->select(['test_userwallet.Id','UID','CountryCode','Status','TimeStamp','UserId','CoinBalance'])
->get()->toArray();
,
您已指定仅使用查询或雄辩。
我认为最好的方法是将端点响应作为 Resource 从控制器返回。
但是如果你必须把它作为模型的一个属性来做。您可以使用 $appends
数组和访问器。请参阅 docs 这将在模型序列化时将属性添加到模型中,就像在响应中返回一样。
protected $appends = [
'coin_balance',];
public function getCoinBalance Attribute()
{
return $this->Wallet->coin_balance;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。