Php id字段未命名id时未找到Yii2 api对象

Php id字段未命名id时未找到Yii2 api对象,php,yii2,Php,Yii2,我有其他api在工作,但我刚刚添加了一个表,该表的id字段是user\u id,而不是id,现在api说找不到该对象。是否有方法覆盖api使用userinfos/1查找的字段 日志通常会为用户/12 SELECT * FROM `user` WHERE `id`='12' 我在userinfos/12中得到这个错误,因为id实际上是user\u info表中的user\u id: exception 'yii\web\NotFoundHttpException' with message 'O

我有其他api在工作,但我刚刚添加了一个表,该表的id字段是
user\u id
,而不是
id
,现在api说找不到该对象。是否有方法覆盖api使用
userinfos/1
查找的字段

日志通常会为
用户/12

SELECT * FROM `user` WHERE `id`='12'
我在
userinfos/12
中得到这个错误,因为id实际上是user\u info表中的user\u id:

exception 'yii\web\NotFoundHttpException' with message 'Object not found: 12' in /opt/decathletics/vendor/yiisoft/yii2/rest/Action.php:101
它应该是
SELECT*FROM user\u info WHERE user\u id='12'
,但我得到的是上述错误

UserinfoController.php

<?php

namespace api\modules\v1\controllers;

use Yii; 
use yii\rest\ActiveController;
use yii\filters\auth\HttpBasicAuth;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use common\models\User;
use api\modules\v1\models\UserInfo;

class UserinfoController extends ActiveController
{

    public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['authenticator'] = [
            'class' => HttpBasicAuth::className(),
        ];
        $behaviors['access'] = [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'allow' => true,
                    'roles' => ['@'],
                    'matchCallback' => function ($rule, $action) {
                        return Yii::$app->user->id == Yii::$app->request->get('id');
                    },
                    'verbs' => ['GET','PUT']
                ],
            ],
        ];
        return $behaviors;
    }

    public $modelClass = 'api\modules\v1\models\UserInfo';

}

ActiveController将使用
yii\rest\Action::findModel($id)
根据数据库表中声明的模型主键来获取数据。在您的情况下,您可以尝试检查数据库架构,以查看
user\u id
是否真的定义为
user\u info
表的主键(而不是
id
),或者您可以尝试通过添加以下内容手动覆盖模型的
primaryKey()
方法:

class UserInfo extends \yii\db\ActiveRecord
{
  ...

  public static function primaryKey()
  {
     return ['user_id'];
  }

  ...

显示相关模型和控制器code@scaisEdge好的,我添加了模型和控制器,但您添加的表并没有取代用户的管理,只是添加了一些字段?@scaisEdge是的,这是关于每个用户的额外信息,user_id是用户表中id的外键也显示(代码)如何调用action我仍然收到相同的错误,并且user_id被定义为数据库中的主键。此表中没有id列
getUser()
不应返回此列:
return$this->hasOne(User::className(),['User\u id'=>id'])?应该是这样的,因为它正在用户表中查找id,但这一部分并不重要,我现在已经从代码中删除了它,但没有得到它。您的日志文件说问题在于获取用户(不是用户信息)时,而UserInfo模型说它在
this->id=user->user\u id
上有一个用户,这与我的想法相反。您正在外部文件或字段中检索相关用户吗?为什么日志中的问题是与
用户
有关,而不是与
用户信息
有关?太好了!我们都在努力!我们知道它应该是静态的+返回一个数组!
class UserInfo extends \yii\db\ActiveRecord
{
  ...

  public static function primaryKey()
  {
     return ['user_id'];
  }

  ...