如何在Yii2中编写数据库/SQL查询,有无模型
我有一个包含多列的表,我想使用另一个列名作为搜索条件返回一个列名。我如何在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->
$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();