【问题标题】:Laravel Select Fields from Two different Table as per ConditionLaravel 根据条件从两个不同的表中选择字段
【发布时间】:2022-11-02 11:49:09
【问题描述】:

我有 3 张桌子(会员、会员 3、付款)

支付表具有与其他两个表(成员,成员3)的关系的记录

我想列出具有两个表关系的记录。

例如:

成员表(计划 1)
身份证、姓名、手机
1,卡蒂克,9237493

成员 3 表(计划 3)
身份证、姓名、手机
1,乔治,923143422

支付表
id、mem_id、plan_id、金额
1, 1, 1, 500
2、1、3、1500

我想获取如下记录:
ID、会员、金额
1,卡尔提克,500
2、乔治,1500

我的 Laravel 代码已经做了一些事情。但无法根据关系模式获取选择字段。

$payout=Payout::leftJoin('tbl_members', function($join){
        $join->on('tbl_payout.mem_id', '=', 'tbl_members.id')
        ->where('tbl_payout.plan_id', '=', '1');
        })       
        ->leftJoin('tbl_members3', function($join){
        $join->on('tbl_payout.mem_id', '=', 'tbl_members3.id')
        ->where('tbl_payout.plan_id', '=', '3');
        })       
->Select(DB::Raw('tbl_payout.mem_id, tbl_members.username, tbl_members.name, tbl_payout.paid, tbl_members.city, tbl_members.mobile, tbl_members.bank, tbl_members.bank_number, tbl_members.bank_branch, tbl_members.bank_ifsc'))
->get();

在这个查询中,Eloquent 只获取 tbl_members 记录,而不是 tbl_members3 记录。 我怎么能做到这一点?

【问题讨论】:

  • 由于您在 payouts 表中有购买的计划 ID,您可以将成员表合并为一个表并轻松查询这些数据。
  • @Harshana 看看上面的查询。它只获取表 1。给我解决方案。

标签: php mysql laravel select eloquent


【解决方案1】:

您在tbl_members.id 的连接查询中有错误,您需要使用tbl_members3 而不是tbl_members

        ->leftJoin('tbl_members3', function($join){
    $join->on('tbl_payout.mem_id', '=', 'tbl_members3.id')
    ->where('tbl_payout.plan_id', '=', '3');
    })       

【讨论】:

  • 没关系。我现在修好了。但问题是我如何从 members 和 members3 表中选择字段。查看选择查询行。
【解决方案2】:

在你的模型中

 class Payout extends Model
 {
     public function member()
     {
         if ($this->plan_id == 1) {
             return $this->belongsTo(Members::class, 'mem_id');
         } else if ($this->plan_id == 3) {
             return $this->belongsTo(Members3::class, 'mem_id');
         }
     }
 }

获取数据:

$payouts = Payout::with('member')->get();
foreach($payouts as $payout) {
    $id = $payout->id;
    $name = $payout->member->name;
    $amount = $payout->amount;
}

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多