我正在开发一个购物车应用程序,现在遇到以下问题:
有一个用户(User)、产品(Product)和购物车(Cart)对象。
- 购物车表只包含以下列:
id
,user_id
,product_id
和时间戳。 - UserModel
hasMany
Carts(因为用户可以存储多个产品)。 - CartModel
belongsTo
User 和 CartModelhasMany
Products。
现在,我可以通过调用Auth::user()->cart()->count()
来计算总产品数。
我的问题是:如何获取此用户购物车中产品价格(product表的一列)的SUM()
?
我希望使用Eloquent完成这个操作,而不是使用查询(主要是因为我认为它会更清晰明了)。
$sum = Auth ::user()->cart()->products()->sum('price');
或者使用你在商品表格上的价格列。 - user1669496Auth::user()->products->sum('price');
。还要确保您已登录,以便Auth类知道要获取哪个用户。您的购物车模型可能不应该有“products()”函数,因为这属于此关系的“User”模型。您甚至不需要一个“Cart”模型。 - user1669496products->sum
表明在集合对象上调用sum,而不是在products()返回的生成器对象上调用。值得澄清你指的是哪一个,并最好提供一个链接来解释两者。 - Benubird...->products->...
将会查询数据库以获取当前模型的所有相关产品,并在内存集合中处理。而使用...->products()->...
则仅仅修改正在构建的查询,直到调用类似于->sum()
这样的方法时才执行查询。后者可能更加高效,因为它避免了从数据库传输不必要的信息到内存中。 - Siegen