代码之家  ›  专栏  ›  技术社区  ›  Safira

从具有最大日期和特定外键的记录中选择信息

  •  1
  • Safira  · 技术社区  · 10 年前

    我有两张表 barang request ,我想在网格视图中显示 peminjam 中的列 巴朗 表,其中 id_barang (PK在 要求 table)等于 id_巴林 (FK英寸 巴朗 表),以及记录的最新日期( tanggal_request 中的列 要求 表)。

    我是在 Barang.php 型号:

    $id_barang = $this->id_barang;
    $criteria = new CDbCriteria;
    $criteria->select = 'max(tanggal_request)';
    $criteria->addColumnCondition(array('id_barang' => $id_barang));
    $model = Request::model();
    $value = $model->commandBuilder->createFindCommand(
         $model->tableName(), $criteria)->queryScalar();
    $hasil = $value;
    return $hasil;
    

    它确实向我显示了最大日期。我不知道如何显示 peminjam公司 . 我试过了:

    $criteria->select = '*';
    ...
    $hasil = $value->peminjam;
    

    但它说:

    正在尝试获取非对象的属性。

    我也尝试过:

    $criteria->select = '*';
    ...
    $hasil = $value['peminjam'];
    

    但它说:

    非法的字符串偏移量“peminjam”。

    1 回复  |  直到 10 年前
        1
  •  1
  •   Criesto    10 年前

    看看这是否有效:

    $id_barang = $this->id_barang;
        $criteria = new CDbCriteria();
        $criteria->select = 'peminjam';
        $criteria->limit = "1";
        $criteria->with = array(
        'request' => array(
        'together'=>true,
        'order'=>"tanggal_request DESC",
        'condition'=>"request.id = $id_barang"
        )
        );
        $data = Barang::model()->find($criteria);
        echo $data->peminjam;
    

    您的代码似乎很好,唯一的问题是您正在尝试获取 peminjam 来自的列 barang 表,我没有看到该模型用于查询,也许这就是为什么您没有获得任何值 peminjam公司 .