2015-02-23 17 views
5

tôi có một vấn đề với Laravel 5 Route Mẫu Binding Tôi đang sử dụng Controller Phương pháp sau đâyLaravel 5 Route mẫu ràng buộc không làm việc trên máy chủ

public function destroy(PrimaryLocation $primaryLocation) { 
    dd($primaryLocation->id); 
    $primaryLocation->delete(); 
    return redirect()->back()->with('locationDeleted', true); 
} 

đâu PrimaryLocation là một hùng biện Mẫu

boot

My RouteServiceProvider của chức năng:

public function boot(Router $router) 
{ 
    parent::boot($router); 

    $router->model('user', 'App\User'); 
    $router->model('PrimaryLocation', 'App\PrimaryLocation'); 
} 

Và trong routes.php tôi

Route::delete('deletePrimaryLocation/{PrimaryLocation}', 
       ['as' => 'admin.deletePrimaryLocation', 'uses' => '[email protected]']); 

Thiết lập này hoạt động tốt trên máy tính cục bộ của tôi, nhưng khi tôi triển khai các tệp đến máy chủ phát triển của mình, ở đâu đó thì ngắt mô hình; Vị trí sẽ không bị xóa khi thực hiện phương pháp.

tôi đã một số var_dumps

dd($primaryLocation->id); 

trên máy tính cục bộ này sẽ trả về id đúng, nhưng trên máy chủ nó sẽ chỉ return null;

Tuy nhiên nếu tôi làm một

dd($primaryLocation) 

Kết quả là tại địa phương

PrimaryLocation {#178 ▼ 
    #fillable: array:1 [▶] 
    #connection: null 
    #table: null 
    #primaryKey: "id" 
    #perPage: 15 
    +incrementing: true 
    +timestamps: true 
    #attributes: array:4 [▶] 
    #original: array:4 [▶] 
    #relations: [] 
    #hidden: [] 
    #visible: [] 
    #appends: [] 
    #guarded: array:1 [▶] 
    #dates: [] 
    #casts: [] 
    #touches: [] 
    #observables: [] 
    #with: [] 
    #morphClass: null 
    +exists: true 
    } 

On trên Server của tôi gần như nhau ... nhưng thiếu các thuộc tính:

 PrimaryLocation {#195 ▼ 
    #fillable: array:1 [▶] 
    #connection: null 
    #table: null 
    #primaryKey: "id" 
    #perPage: 15 
    +incrementing: true 
    +timestamps: true 
    #attributes: [] 
    #original: [] 
    #relations: [] 
    #hidden: [] 
    #visible: [] 
    #appends: [] 
    #guarded: array:1 [▶] 
    #dates: [] 
    #casts: [] 
    #touches: [] 
    #observables: [] 
    #with: [] 
    #morphClass: null 
    +exists: false 
} 

Có ai có một đầu mối những gì có thể đi sai?

[UPDATE]

nếu tôi nhận xét ra

// $router->model('PrimaryLocation', 'App\PrimaryLocation'); 

Trong tôi ServiceProvider, hành vi địa phương cũng giống như trên máy chủ. Có thể đã xảy ra sự cố khi tải ServiceProvider? Có thể có một số loại bộ nhớ cache?

+0

Các thiếu 'attributes' là bởi vì nó không thể tìm thấy các bản ghi. Dữ liệu có giống nhau trong cơ sở dữ liệu không? tức là cùng một cơ sở dữ liệu, bảng và trường? Cụ thể - bản ghi có tồn tại không? – Laurence

+0

Tên tệp của bạn có chính xác trên máy chủ không? Có phải nó là 'PrimaryLocation.php' với trường hợp nhạy cảm như nhau? – Laurence

+0

Nếu nó không thể tìm thấy bản ghi, sẽ có một lỗi 404 (tại leas các tài liệu nhà nước này), nếu tôi là chính xác. Và nếu tên tập tin không chính xác thì sẽ có một số loại lỗi "cứng" ... (Rất tiếc, đã xảy ra sự cố) –

Trả lời

9

Sau khi đi qua cùng một vấn đề, tôi phát hiện ra rằng trong sản xuất, storage/framework/compiled.php không được xây dựng lại thường xuyên như trong chế độ phát triển.

Về cơ bản, bạn chỉ đang chạy phiên bản cũ của RoutesServiceProvider.php trên máy chủ sản xuất của mình.

Việc khắc phục dễ dàng là đủ. Chỉ cần chạy php artisan clear-compiled.

Sẽ là một cách hay để thêm dòng vào bất kỳ tập lệnh triển khai nào.

+2

Holy crap cảm ơn bạn. Tôi đã phát điên – Grant

-1

chỉ cần thêm dòng này để serviceProvider :: boot()

$router->model('attribute', Attribute::class); 
Các vấn đề liên quan