[英]get limited numbers of data with yii2
我想使用 Yİİ2 从数据库中获取有限数量的数据。 我通过写这个来获取所有记录:
$departures = ArrayHelper::map(
TourDeparture::find()->all(),
'id',
'tour_id'
);
我尝试使用limit(5)
,这样我只能得到 5 行。 但我不能。 尽管如此,我还是得到了表中的所有行。 我怎样才能做到这一点?
更新:这是我的出发地 model
class TourDeparture extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'tour_departure';
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['tour_id', 'start_date', 'end_date', 'price_1adult', 'price_2adult', 'price_3adult', 'price_child', 'price_baby', 'min_guests', 'max_guests', 'status', 'required_min_guest'], 'required'],
[['tour_id', 'min_guests', 'max_guests', 'status', 'required_min_guest'], 'integer'],
[['start_date', 'end_date'], 'safe'],
[['price_1adult', 'price_2adult', 'price_3adult', 'price_child', 'price_baby'], 'number'],
[['tour_id'], 'exist', 'skipOnError' => true, 'targetClass' => Tour::className(), 'targetAttribute' => ['tour_id' => 'id']],
];
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'tour_id' => 'Tour ID',
'start_date' => 'Start Date',
'end_date' => 'End Date',
'price_1adult' => 'Price 1adult',
'price_2adult' => 'Price 2adult',
'price_3adult' => 'Price 3adult',
'price_child' => 'Price Child',
'price_baby' => 'Price Baby',
'min_guests' => 'Min Guests',
'max_guests' => 'Max Guests',
'status' => 'Status',
'required_min_guest' => 'Required Min Guest',
];
}
/**
* Gets query for [[Tour]].
*
* @return \yii\db\ActiveQuery
*/
public function getTour()
{
return $this->hasOne(Tour::className(), ['id' => 'tour_id']);
}
/**
* Gets query for [[TourReservations]].
*
* @return \yii\db\ActiveQuery
*/
public function getTourReservations()
{
return $this->hasMany(TourReservation::className(), ['tour_departure_id' => 'id']);
}
}
检索前 5 行应该是
TourDeparture::find()->orderBy("id")->limit(5)->all()
$departures = ArrayHelper::map( TourDeparture::find()->limit(5), 'id', 'tour_id' );
我像上面那样写的。 但我得到了所有的记录
我很惊讶您的代码完全有效! 您将Query
class 传递给map
function。 ArrayHelper::map
需要一个数组,需要使用->all()
执行查询。 ->limit(5)
只是向 SQL 查询添加一个新术语。
$departures = ArrayHelper::map( TourDeparture::find()->limit(5)->all(), 'id', 'tour_id' );
您共享的代码没有达到限制(5)。 无论如何,我相信它是由数组 map 引起的,您可以尝试模拟如下变化
$q = TourDeparture::find()->select(['id', 'tour_id'])->limit(5)->asArray()->all();
\yii\helpers\VarDumper::dump($q, $depth = 10, $highlight = true);
对于上述,以数组形式选择的记录,在数组 map 之前。
在数组 map 之后,您可以从这里比较更改。
$departures = ArrayHelper::map(
$q,
'id',
'tour_id'
);
\yii\helpers\VarDumper::dump($departures, $depth = 10, $highlight = true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.