【问题标题】:Yii2 user profileYii2 用户资料
【发布时间】:2018-05-19 22:16:20
【问题描述】:

好吧,有一次我使用 yii2 和 1 个用户表和 1 个配置文件表(管理员、用户),当我连接到数据库时很容易,但现在我有 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”的名称,但我也想搜索其他表的 ID,请帮助

顺便说一句,我的另外 2 个表是“contador”和“mecanico”,其中 id 是 contador 的“id_cont”和 mecanico 的“id_mec”

【问题讨论】:

  • 您还为哪个表创建了原始sql 查询?从数据库中搜索正确的记录
  • 我的另外两个表是“contador”和“mecanico”,其中 id 是 contador 的“id_cont”和 mecanico 的“id_mec”
  • id_contid_mecAdministrador 模型中的列吗?并且您想将它们与什么值进行比较,您在 findIdentity 函数中只有 $id
  • 不,“管理员”只有“id_admin”
  • 我不明白你为什么要在这些表中搜索这些 id?除了使用用户身份的那个吗?

标签: yii2 profile


【解决方案1】:

选项 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2011-04-03
    相关资源
    最近更新 更多