Yii2 профиль пользователя - PullRequest
0 голосов
/ 20 мая 2018

хорошо, так что однажды я использовал yii2 с 1 таблицей пользователя и 1 таблицей профиля (admin, user), и это было легко, когда я подключился к БД, но теперь у меня есть 3 таблицы пользователя и когда я пытаюсь подключить егок БД у меня проблема ... с функцией findIdentity

  public static function findIdentity($id)
{

    $users = Administrador::find()->where(['id_admin'=>$id])->one();
    if(!count($users)){
      return null;
    }
    else{
      //this->password=$users->passwd;
      return new static($users);
    }
    //return isset(self::$users[$id]) ? new static(self::$users[$id]) : null;
}

, как вы можете видеть в $ users = Administrador :: find () у меня есть имя таблицы "Administrador", но я хочупоиск по идентификатору других таблиц тоже, помогите пожалуйста

кстати, мои две другие таблицы - "contador" и "mecanico", где id "id_cont" для contador и "id_mec" для mecanico

1 Ответ

0 голосов
/ 20 мая 2018

Опция 1

Добавление библиотек в начало файла сценария:

use someloc/model/Administrator;
use someloc/model/Contador;
use someloc/model/Mecanico

Затем:

$users1 = Administrador::find()->where(['id_admin'=>$id])->one();
$users2 = Contador::find()->where(['id_admin'=>$id])->one();
$users3 = Mecanico::find()->where(['id_admin'=>$id])->one();

if (count($users1)) {
    return $user1;
} elseif (count($users2)) {
    return $user2;        
} elseif (count($users3)) {
    return $user3;
} else {
    ....
}

Опция 2

Используйте команду createCommand вДля использования обычного оператора SQL.

Примечание. Следующий запрос объединяет результаты двух таблиц.

$sql = "
    SELECT 
        userid
      , field2  
    FROM
    (
            SELECT 
                t1.user_id   AS userid
              , anotherfield AS field2
            FROM 
                table1 t1

            UNION 

            SELECT 
                t1.user_id   AS userid
              , anotherfield AS field2
            FROM 
                table2 t2
    ) x
    WHERE 
        user_id = :user_id

";

$params = [':user_id' => $user_id];
$data = Yii::$app->db->createCommand($sql)->bindValues($params)->queryAll();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...