如何使用精确的数据透视表关系

时间:2018-12-17 13:31:04

标签: php laravel

我在数据库(sql)中有四个表:

客户表:

id
name

积分表:

id
name
count

customer_credit表(数据透视表):

customer_id
credit_id
expiry_date

消费者表:

id
customer_id

这是带有laravel的SPA应用程序(基于Web的)。 如何从consumers表接收(仅登录客户)记录,而customer_credit表中的条件是可用记录没有到期日期,因为我们可以计算剩余信用额。进一步说明,我们正在尝试收集泳池和健身房中客人的出入日志,我们希望在credits表中获得确切的customer_credit表ID的计数。

1 个答案:

答案 0 :(得分:0)

第一个选择,使用Laravel Query Builder

DB::table('consumers')
     ->select('consumers.*')
     ->join('customers', 'consumers.customer_id', '=', 'customers.id')
     ->join('customer_credit', 'customers.id', '=', 'customer_credit.customer_id')
     ->join('credits', 'customer_credit.credit_id', '=', 'credits.id')
     ->where('credits.count', '>', 0)
     ->where('customer_credit.expiry_date', '>=', date('Y-m-d'))
     ->get();

第二个选项,以使用Laravel Eloquent。如果您选择第二个并需要帮助,则应在此处共享您的模型结构。

也请阅读本主题以了解不同之处:Laravel Eloquent vs query builder - Why use eloquent to decrease performance