Выберите информацию из записи с максимальной датой и конкретным внешним ключом

У меня есть две таблицы barang а также requestЯ хочу отобразить в моем gridview значение peminjam колонка в barang стол где id_barang (ПК в request таблица) равно id_barang (ФК в barang таблица), и где запись имеет самую последнюю дату (tanggal_request колонка в 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

Решение

Посмотрите, работает ли это:

$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,

1

Другие решения

Других решений пока нет …