【问题标题】:Laravel Join Query returning empty columnLaravel Join Query返回空列
【发布时间】:2019-10-21 16:15:15
【问题描述】:

我有一个 member 表,其中包含一些条目。每个成员都可以在 laravel 的 users 表中创建一个用户帐户。

他们每个人都有一个名为“person_id”的字段,这就是建立联系的方式。

我有一个搜索返回一个包含所有这些的列表。我有一个“仅搜索已注册”复​​选框,这意味着它仅返回拥有用户帐户的成员,否则如果检查未检查,则返回所有成员的组合。

问题是,无论复选框是否被选中,都必须为每个人拉出person_id。

if($reg == 'on') {
        $Members = $Members->rightJoin('users', 'users.person_id', '=', 'members.person_id');
    }
    else {
        $Members = $Members->leftJoin('users', 'users.person_id', '=', 'members.person_id');
    }

我尝试使用 leftJoin 但 person_id 为空

【问题讨论】:

  • 发布您的表结构用户和成员。也打印您的查询。

标签: mysql sql laravel


【解决方案1】:

我从来没有发现过。

大多数成员还没有用户帐户,只有 2 个。并且选择没有指定从哪个表中获取 person_id。由于大多数成员缺少用户帐户,它试图从用户那里获取它。

我这样做了:

 $Participants = Member::select(
        'members.first_name',
        'members.last_name',
        'members.person_id',
        'members.email'
    );

【讨论】:

    【解决方案2】:

    在成员模型中使用关系:

    public function user()
    {
        return $this->belongsTo('App\User', 'person_id', 'person_id' );
    }
    
    public function getMemberWithUser()
    {
        return $this->select('*')->with('user')->get()->toArray();
    }
    

    并在控制器中使用(new Member)->getMemberWithUser();。这将返回您的用户详细信息。

    【讨论】:

      【解决方案3】:

      乍一看,如果您使用的是 Eloquent,我可以告诉您缺少“->get();”在每个查询结束时。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-10-05
        • 1970-01-01
        • 2017-08-28
        • 2016-09-26
        • 2015-02-26
        • 1970-01-01
        • 2021-08-05
        • 2017-07-10
        • 1970-01-01
        相关资源
        最近更新 更多