Quay lại

Fetching dynamic attributes cho models in Laravel Chuyên mục PHP và Laravel    2023-07-26    299 Lượt xem    65 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Fetching dynamic attributes cho models in Laravel

Có tồn tại tính năng gọn gàng này trong Laravel mà bạn có thể thêm các thuộc tính trong các model mà không có cột tương ứng trong cơ sở dữ liệu của mình.

Bạn có thể làm được điều này bằng cách trước tiên tạo một  accessor  cho thuộc tính mà bạn muốn được trả về khi truyền model thành một mảng hoặc JSON. Bạn có thể tạo một accessor như bên dưới.

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    /**
     * The accessors to append to the model's array form.
     *
     * @var array
     */
    protected $appends = ['is_editable'];

    /**
     * Get the administrator flag for the post.
     *
     * @return bool
     */
    public function getIsEditable()
    {
        return $this->attributes['admin'] == 'yes';
    }
}

Lưu ý ở đây rằng, bạn cần thêm tên thuộc tính vào thuộc tính appends trong model của mình. Cũng lưu ý rằng, tên thuộc tính thường được tham chiếu trong trường hợp snake case, mặc dù accessor được xác định bằng cách sử dụng trường hợp camel case.

Khi thuộc tính đã được thêm vào danh sách appends, nó sẽ được đưa vào cả biểu diễn mảng và JSON của model.

Fetching dynamic attributes trong khi chạy

Bạn có thể sử dụng phương thức chắp thêm trên model instance để nối thêm các thuộc tính một cách nhanh chóng.

return $post->append('is_editable')->toArray();

Hoặc nếu bạn có thể sử dụng phương thức setAppends, nếu bạn muốn nối thêm nhiều thuộc tính như vậy.

return $post->setAppends(['is_editable', 'is_expired'])->toJson();

setAppends

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday