gpt4 book ai didi

php - 使用 Yii2 在 sqlserver 中选择模式和表?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:17 25 4
gpt4 key购买 nike

我有一个有多个模式的 sql server 数据库。我尝试使用 sqlsrv 驱动程序从不同模式的表中选择一个表,但显示配置无效,该表不存在。如何使用 sqlsrv 驱动程序选择表中的模式?

我的连接

<?php 
return [
'class' => 'yii\db\Connection',
'dsn' => 'sqlsrv:Server=192.168.10.70;Database=mydatabase', // MS SQL Server, sqlsrv driver public ip
'username' => 'user_username',
'password' => 'user_password',
'charset' => 'utf8',
];
?>

我的模型

<?php
namespace app\models;

use Yii;
use yii\db\ActiveRecord;

class Transaction extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'schema2.transaction';
}

public static function getDb()
{
return \Yii::$app->db3; // use the "db3" application component
}

/**
* @inheritdoc
*/
public function rules()
{
return [[['id', 'number', 'amount', 'date', 'status', 'description'], 'required']];
}

/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => Yii::t('app', 'Uid'),
'number' => Yii::t('app', 'Number'),
'date' => Yii::t('app', 'Date'),
'amount' => Yii::t('app', 'Amount'),
'description' => Yii::t('app', 'Item Description'),
'status' => Yii::t('app', 'status'),
];
}
}
?>

最佳答案

MS SQL 中完整的表名包含三部分:架构、所有者和表名,例如:

dbo.user1.table1

这意味着 table1 是由 user1dbo 模式中创建的。

如果你不知道所有者或者它是默认用户(sa),你可以像这样传递它:

dbo..table1

所以我建议你试试

return 'schema2..transaction';

return 'schema2.YOUR_USER_NAME_HERE.transaction';

用于正确解析来自不同模式的表名。

关于php - 使用 Yii2 在 sqlserver 中选择模式和表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27979252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com