Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Yii2中编写数据库/SQL查询,有无模型_Sql_Yii2 - Fatal编程技术网

如何在Yii2中编写数据库/SQL查询,有无模型

如何在Yii2中编写数据库/SQL查询,有无模型,sql,yii2,Sql,Yii2,我有一个包含多列的表,我想使用另一个列名作为搜索条件返回一个列名。我如何在yii2中实现这一点 下面是示例代码,普通sql应该是: $name = SELECT type_name FROM ProductTable WHERE type_id = 1; echo $name; 这应该返回列类型_name的值,其中列类型_id的值等于1。我试过了,但没用 $type_name = ProductTable::find()->where(['type_id' =>$model->

我有一个包含多列的表,我想使用另一个列名作为搜索条件返回一个列名。我如何在yii2中实现这一点

下面是示例代码,普通sql应该是:

$name = SELECT type_name FROM ProductTable WHERE type_id = 1;
echo $name;
这应该返回列类型_name的值,其中列类型_id的值等于1。我试过了,但没用

$type_name = ProductTable::find()->where(['type_id' =>$model->type_id]);

$type_name = Product::find(['type_name'])->where(['type_id' =>$model->type_id]);
我也试过这个,但我猜是错的


我希望我的问题足够清楚,任何帮助他都会感激的

有关Yi2的ActiveRecord的一般介绍,请参阅指南:

如果您想要完整的一行并有一个模型,您只需要缺少一个
one()

如果已定义模型且只需要一个值,请尝试:

Product::find()->select('type_name')->where(['type_id' =>$model->type_id])->scalar();
它基本上通过模型生成ActiveQuery,并将其更改为仅返回匹配结果第一行中的第一列

如果没有模型,还可以在不使用ActiveRecord的情况下生成正常查询()


我假设您使用Gii模块生成ProductTable

此外,如果type_id列是主键:

$product = ProductTable::findOne($model->type_id);
if($product !== null) { $product->typeName /*... read value ...*/}
或者是为了得到所有的记录

$products = ProductTable::findAll($model->type_id); //match all records.
对于任何其他列,请使用以下语法:

$product = ProductTable::findOne(['type_id' => $model->type_id]);

使用以下代码获取类型\ u名称

 $PTable=ProductTable::find()->select('type_name')->where(['type_id' =>$model->type_id])->one();
    echo $PTable->type_name;

你也可以使用createCommand

$name = \Yii::$app->getDb()->createCommand("SELECT type_name FROM ProductTable WHERE type_id=:typeId", ['typeId'=>$model->type_id])->queryAll();
 $PTable=ProductTable::find()->select('type_name')->where(['type_id' =>$model->type_id])->one();
    echo $PTable->type_name;
$name = \Yii::$app->getDb()->createCommand("SELECT type_name FROM ProductTable WHERE type_id=:typeId", ['typeId'=>$model->type_id])->queryAll();