Yii2 Active Record的“ with”关系不返回子数据

萨拉尼亚测试

我是YII框架的新手,我正在尝试使用活动记录和ORM框架。

有三张桌子请检查图像

设计

这是我的Customer,OrderType和Orders的代码

class Customer extends \yii\db\ActiveRecord
{

public static function tableName()
{
    return 'Customer';
}

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['id', 'name'], 'required'],
        [['id'], 'integer'],
        [['name'], 'string'],
    ];
}


 /**
 * @return \yii\db\ActiveQuery
 */
public function getCustomers()
{
    return $this->hasMany(CollectorCustomerMaster::className(), ['CollectorCode' => 'CollectorCode']);;
}

 }

 <?php
 namespace api\modules\v1\models;
 use Yii;
class OrderType extends \yii\db\ActiveRecord
{
/**
 * @inheritdoc
 */
public static function tableName()
{
    return 'OrderType';
}

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['id', 'name'], 'required'],
        [['id'], 'integer'],
        [['name'], 'string'],
    ];
}
}

class Orders extends \yii\db\ActiveRecord
{

public static function tableName()
{
    return 'Orders';
}

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['id', 'name','customer_id','order_type_id'], 'required'],
        [['id','customer_id','order_type_id'], 'integer'],
        [['name'], 'string'],
    ];
}


public function getOrderType(){
    return $this->hasOne(OrderType::className(), ['id' => 'order_type_id']);

}
}

如果我尝试查询订单类型的订单,订单类型数据不会出现。这是我的代码,

   if (Yii::$app->common->checkRequest('POST')) {
            //if ($this->validateRoute('getCustomers')) {
                $coCollector = Orders::find()->where(['id'=>'1'])->with('orderType')->one();;

                if(isset($coCollector)){
                    $data2 = null;

                    Yii::$app->common->setCode(200);
                    $response = ['status' => Yii::$app->common->getCode(), 'message' =>'Success', 'data' =>$coCollector,'data2'=>$data2];
                    return $response;
                }
           // }

        }

如果运行此命令,则会得到以下结果。

 {
"status": 200,
"message": "Success",
"data": {
    "id": "1",
    "customer_id": "4",
    "order_type_id": "1",
    "name": "Aptitude  "
},
"data2": null
}

如何也获取OrderType数据?请有人帮我。我在互联网上进行了彻底搜索,没有找到任何示例代码。

玛兹

您已经在Order类中将OrderType关系定义为getOrderType()函数。因此,您可以使用此关系函数获取OrderType数据。您可以像这样直接在Order类对象上调用此关系函数

$orderTypeData = $coCollector->getOrderType();

或者您可以通过以下简单方式使用它

$orderTypeData = $coCollector->orderType;

然后,您可以将其放入您的文件中$response请检查此文档以获得更好的理解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Active Record中的Yii2子查询

来自分类Dev

Yii2 Active Record类load()或save()不更新数据

来自分类Dev

Yii2 Active Record:显示相关记录的最佳方法

来自分类Dev

Yii2 Active Record:显示相关记录的最佳方法

来自分类Dev

将CASE查询的SQL转换为Yii2 Active Record

来自分类Dev

Yii使用Active Record从数据库加载系统参数

来自分类Dev

Active Record查询,用于在YII2中两个ID之间进行更新,而无需使用行查询

来自分类Dev

Yii2 Active记录如何在mongo模型之间建立关系

来自分类Dev

yii Active Record change model instance if exist

来自分类Dev

YIi Active Record选择固定字段

来自分类Dev

Yii Active Record COALESCE不显示结果

来自分类Dev

Yii Active Record with Oracle无法正常工作

来自分类Dev

Ruby Active Record在Ruby on Rails中返回关系

来自分类Dev

Yii2 REST API关系数据返回

来自分类Dev

Yii2 REST API关系数据返回

来自分类Dev

Rails Active Record访问数据问题

来自分类Dev

Active Record 数据库组织

来自分类Dev

Active Record根据子数据获取父记录

来自分类Dev

Yii2与参数的关系

来自分类Dev

IS NOT NULL在Yii Active Record中不起作用

来自分类Dev

yii Active Record更改模型实例(如果存在)

来自分类Dev

将原始SQL传递给yii2 active dataProvider

来自分类Dev

active form multi model and multi attributes in Yii2

来自分类Dev

Yii 2,Active Record类在保存后未获得ID

来自分类Dev

Rails Active Record指定关系模型上的位置

来自分类Dev

Yii2 ActiveRecord统计关系

来自分类Dev

Yii2如何设置关系别名

来自分类Dev

Yii2多对多模型关系

来自分类Dev

yii2 hasOne关系工作错误