所以,用户有很多balance_transactions
和最后插入的balance_transactions
记录将是用户帐户余额。>表
我尝试在用户模型中使用类似的东西
public function balance {
return $this->hasMany(App\BalanceTransaction::class);
}
public function account_balance {
return $this->balance()->orderBy('id', 'DESC')->limit(1);
}
我得到这样的数据
$user = User::where('id', 1)->with('account_balance')->first();
return response()->json($user);
结果如下所示:
{
"id": 1,
"username": "john0131",
"full_name": "john doe",
"email": john@test.com,
"account_balance": [
{
"id": 234,
"user_id": 1,
"total": 7850
"added_value": 50
"created_date": "2020-02-28 12:18:18"
}
]
}
但是我想要的,回报应该是这样的下面json:
{
"id": 1,
"username": "john0131",
"full_name": "john doe",
"email": "john@test.com",
"account_balance": 7850
}
我的问题是,如何用拉雷维尔雄辩恰当的方式制作这样的东西?因此,我只能使用像$user=user::find(1)这样的简单代码来获取
账户余额
数据
。
提前感谢
我建议只从事件表中加载一行,并关注性能。此外,您可以将访问器的值附加到模型的序列化输出(例如__toArray()
),并仅在关系已经加载时返回实际值。
class User extends Authenticatable
{
protected $appends = ['account_balance'];
public function balance()
{
return $this->hasMany(App\BalanceTransaction::class);
}
public function latestBalance()
{
return $this
->hasOne(App\BalanceTransaction::class)
->latest();
}
public function getAcountBalanceAttribute()
{
if (! $this->relationLoaded('latestBalance')) {
return null;
}
return $this->latestBalance->total;
}
}
解决这一问题的一种方法是,您可以使用laravel访问器
因此,在您的用户模型中,您可以创建如下方法
/**
* Get the user's balance.
*
* @return float
*/
public function getAccountBalanceAttribute()
{
return $this->balance->last()->total;
}
然后无论你想在哪里使用它,你都可以通过:$user-
我正在使用hibernate多对多的关联。我有3个表(STUDENT,COURSE和STUDENT_COURSE)。在3个表中,2个是主表,1个是提供关系的中间表。当记录从STUDENT中删除时,相应的映射将从Student_Course中删除。我的要求是它甚至应该从课程表中删除记录。考虑以下STUDENT_COURSE条目: 当从学生表中删除101时,上述表中的第一个条目被删除,但课程表中对应于
问题内容: 我有一个使用联接表建模的一对多关系: 这些表应该模拟一个t1与多个t2的关系。使用JPA为这些表建模的正确方法是什么? 问题答案: 一个T1到多个T2的典型表是在T2上有一个指向T1的外键。通常不需要T1_T2表。 这样,JPA结构将是一对多的,可能是双向的。 可能会有一些安排,以使您描述的结构起作用。您可以更改T1_T2: 在T2上添加唯一约束(以便仅允许一个T2) 那真的是你想要的
问题内容: 我正在研究Firebase项目,我在其中将用户信息存储在表中。现在,我的要求是在表中显示所有用户。这是我的数据库快照 我可以使用从数据库中获取所有用户 上面的代码向我返回了包含bod,电子邮件,姓名,性别的用户数组。但是我只想获取电子邮件和用户名。 有没有一种方法只能从数据库中获取指定的字段? 问题答案: 读取节点时,必须检索其全部内容。因此,无法从读取路径时返回的数据中仅获取 特定
问题内容: 我有几个领域的大型语料库的索引。这些字段中只有一个包含文本。我需要基于此字段从整个索引中提取唯一单词。有谁知道我如何在Java中使用Lucene做到这一点? 问题答案: 您正在寻找术语向量(字段中所有单词的集合以及每个单词的使用次数,不包括停用词)。您将对索引中的每个文档使用IndexReader的getTermFreqVector(docid,field),并在其中填充。 替代方法是
问题内容: 我有dbo.Users表 然后我有dbo.Phones表 然后我有dbo.Relationship表 我如何进行查询返回 这就是我到目前为止所得到的。 问题答案: 在这里,将“关系”表视为“用户”和“电话”表之间的中间人。它与映射表是多对多关系。将您的用户加入到关系中,然后将其加入到您的电话中。 可以这样想: 用户: 您好关系,我的UserId = 1,我对那个UserId有什么电话I
我需要在我的数据库中创建多个多对多的关系。 有一个“主”表,我们称之为“项目”。 然后有3个表包含“选项”。 假设我们有:品类、地域、用户。这些保存的唯一信息是项目的名称和ID。 可以将多个类别、区域和用户分配给多个项目。 因此,我有两个选项来创建这种关系: 1)为每个'选项'表创建关系表。每个表包含两列:project_id和category_id、region_id或user_id。使用这种方