Laravel, Mysql, PHP

Sử dụng View MySQL trong Laravel

Cài đặt:

  • Tạo Migration cho view:
....
  public function up()
    {
        DB::statement("
            CREATE OR REPLACE view user_view_1
            AS
            SELECT
                users.id,
                users.name,
                users.email,
                users.status,
                users.role,
                users.gender,
                users.phone_number,
                users.address
            FROM
                users
            WHERE
                users.role = 1;
        ");
    }

....
  • Tạo Model cho view vừa tạo:
...
class UserView1 extends Model
{
    use HasFactory;

    protected $table = 'user_view_1';

    protected $fillable = [];
}
...
  • Sử dụng:
....
    protected $user1View;

    public function __construct(
        UserView1 $user1View, 
    ) {
        $this->user1View = $user1View;
    }

....

$list = $this->user1View->get();
....
  • Khi này View vừa tạo sẽ được sử dụng như 1 bảng bình thường trong database

Có thể sử dụng view này thay thế cho trường hợp:

  • Hiển thị dữ liệu bảng khi Join nhiều bảng với nhau, sẽ hữu ích khi dùng cho các chức năng sắp xếp, tìm kiếm,…
  • Khi dữ liệu trong 1 bảng có điều kiện hiển thị riêng biệt
  • ….