2014-04-29 14 views
22

Trong laravel, sau khi sử dụng attach() hoặc detach() để thêm hoặc loại bỏ một cái gì đó từ một mối quan hệ, bộ sưu tập đã không thay đổi. Vì vậy, nếu tôi có một mô hình có realation chứa [1, 2], sau này:Làm cách nào để tải lại bộ sưu tập quan hệ trong laravel?

$model->relation()->detach(1); 
$model->relation()->attach(3); 

nó vẫn sẽ chứa [1, 2]! Làm cách nào để làm mới?

Trả lời

42

Bạn có thể dễ dàng nói laravel để làm điều đó với một lệnh duy nhất:

$model->load('relation'); 

Will tell nó để làm mới bộ sưu tập liên quan, và $model->relation bây giờ sẽ hiển thị các giá trị chính xác.

+0

Điều này cũng thuận tiện cho việc tải lại mô hình sau khi thực hiện trường hợp '$ model-> relation() -> save ($ relation)'. –

+0

Bạn cũng có thể làm 'unset ($ model-> relation)' – Benubird

+0

@SilverPaladin Có thể tốt hơn để lưu nó như thế này: http://laravel.com/docs/5.0/eloquent#inserting-related-models – haakym

3

Nếu bạn muốn buộc tất cả các mối quan hệ của bạn để tải lại trên cơ sở khi cần và bạn đang ở trong mô hình của bạn, bạn có thể sử dụng:

$this->relations = []; 
2

Có thể sử dụng xây dựng truy vấn hùng biện:

$freshCollection = $user->roles()->get(); 
Các vấn đề liên quan