2016-09-02 20 views
14

Tôi đang sử dụng Laravel và Eloquent trong hai năm và hôm nay tôi đã quyết định cài đặt Laravel 5.3 mới và thử cái gì đó với nó.Laravel 5.3 Tạo mô hình Trả về "Trường không có giá trị mặc định"

Tôi đã sử dụng lược đồ cơ sở dữ liệu cũ của tôi và tạo mô hình của tôi, các cột có thể điền được xác định. Đây là những gì mô hình Page của tôi trông giống như:

<?php 

namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class Page extends Model 
{ 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'language', 
     'title', 
     'slug', 
     'url', 
     'description', 
     'tags', 
     'wireframe', 
     'order', 
     'is_active' 
    ]; 

    public function menus() 
    { 
     return $this->belongsToMany(Menu::class); 
    } 
} 

url thuộc tính là một cột TEXT -type trên MySQL vì vậy nếu tôi không vượt qua bất kỳ giá trị cho nó khi tạo ra một mô hình, nó phải là một chuỗi rỗng. Thay vào đó, tôi tiếp tục gặp lỗi SQLSTATE[HY000]: General error: 1364 Field 'url' doesn't have a default value.

Đây là nỗ lực của tôi để tạo ra một mô hình mới gởi:

Page::create([ 
    'title' => $root_menu['title'], 
    'slug' => $root_menu['slug'], 
    'language' => $this->language, 
    'wireframe' => key(config('cms.wireframe')), 
    'order' => 0 
]); 

Đây có phải là một vấn đề có liên quan Laravel 5.3 hay tôi thiếu cái gì? Cảm ơn trước sự giúp đỡ của bạn.

Trả lời

40

Lý do lỗi đã được giải thích bởi @Nicklas.

Lý do điều này xảy ra ngay bây giờ, tuy nhiên, Laravel 5.3 sử dụng chế độ strict cho MySQL theo mặc định.

Nếu bạn muốn hoàn nguyên về hành vi trước đó, hãy cập nhật tệp config/database.php và đặt 'strict' => false cho kết nối của bạn.

+1

Con trai lén lút đó ... – swt83

9

Bạn đang cố chèn một đối tượng, không có thuộc tính 'URL', vào bảng có cột 'URL' không có giá trị mặc định. Vì vậy, cơ sở dữ liệu không thể biết phải làm gì với cột đó.

Bạn có thể thực hiện một trong ba điều.

  1. điền vào các giá trị URL trong Change tạo
  2. giản đồ của bạn để cho phép chèn null trên URL
  3. Thay đổi schema URL để bao gồm một giá trị mặc định. (chuỗi rỗng)

Đăng di chuyển hoặc lược đồ của bạn, nếu bạn cần trợ giúp thêm.

+0

mysql không nên trả về lỗi khi cố gắng chèn giá trị null vào trường không có giá trị không? – Sherif

+1

Có? Trong trường hợp này, ông chỉ đơn giản là không chèn bất cứ điều gì vào lĩnh vực này thậm chí không một giá trị null. –

+0

Trong tình huống của tôi, tôi có cột trống. Khi tôi làm cho nó nullable() theo mặc định, mọi thứ bắt đầu hoạt động tốt. –

Các vấn đề liên quan