Laravel Join Query возвращает пустой столбец - PullRequest
1 голос
/ 06 июня 2019

У меня есть member таблица с некоторыми записями.Каждый участник может создать учетную запись пользователя в таблице users laravel.

Каждый из них имеет поле с именем "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 пусто

Ответы [ 3 ]

0 голосов
/ 06 июня 2019

Используйте отношение в модели элемента:

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(); в контроллере.Это вернет вам детали пользователя с пользователем.

0 голосов
/ 06 июня 2019

Парни, я никогда не узнал.

У большинства пользователей еще нет учетной записи пользователя, только 2. И выбор не определял, из какой таблицы взять person_id.И поскольку большинство участников пропустили учетную запись пользователя, она пыталась получить ее от пользователей.

Я сделал это:

 $Participants = Member::select(
        'members.first_name',
        'members.last_name',
        'members.person_id',
        'members.email'
    );
0 голосов
/ 06 июня 2019

на первый взгляд, если вы используете Eloquent, я могу сказать, что вам не хватает "-> get ();" в конце каждого запроса.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...