Categories
Programming Yii2

กระบวนท่า ActiveDataProvider

ด้วยความที่ใช้งาน Yii Framework มาตั้งแต่ version 1 ที่สามารถสร้าง ActiveReocrd ขึ้นมาด้วย Gii แล้วมี search() ที่มีแถมมาให้เสร็จสรรพ ทำให้เวลามาใช้งาน Yii2 ก็เกิดความเคยชิน ต้องสร้าง search() ขึ้นมาใช้งานทุกครั้งไป

Basic Structure

ปกติ น่าจะเขียนรูปแบบประมาณนี้ โดยใส่เงื่อนไขต่างๆไว้ภายใน method

public function search() {
    $query = $this->find();

    /* Conditions */
    $query->andFilterCompare('xxx1',$this->xxx1);
    $query->andFilterCompare('xxx2',$this->xxx2);

    return new ActiveDataProvider([
        'query' => $query,
    ]);
}

ดีย์งาม … ใช้งานได้ปกติ .. แต่ไหนๆแล้ว เขียนทีเดียว เอาให้คุมอยู่ทุกกระบวนท่าเลยละกัน

แนวคิดหลักๆเลย คือ เราอยากจะได้อะไร ก็ใส่ๆๆ ไปใน Model แล้วเขย่าออกมาเลย ไม่ต้องมาปรุงต่อ

  • สามารถ Reuse Query
  • จัดการ Query สับซ้อน
  • จัดการ Virtual Attribute
  • จัดการการเรียงลำดับ

Advanced Structure

เพื่อความสะดวก

public function getBaseQuery() {
    $query = $this->find();

    /* Conditions */
    $query->andFilterCompare('xxx1',$this->xxx1);
    $query->andFilterCompare('xxx2',$this->xxx2);

    return $query;
}

public function getQuery() {
    $query = $this->getBaseQuery();
    return $query;
}

public function search() {
    $query = $this->getQuery();

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    return $dataProvider;
}

Sort

เด๋วมาต่อ …

Leave a Reply

Your email address will not be published. Required fields are marked *