Model : Book
- title
- description
- price → decimal
- available → boolean (表示這本書有無要上架)
php artisan migrate後,打開DB Browser看SQLite是否新增books資料表
接著在終端機打php artisan tinker 透過互動直接來看資料,而不需要建一個view來看資料的呈現
像下方的Book::count() 等同於 Select count(*) from books; 這就是ORM的好處,在透過操作類別或操作物件的過程中,其背後會翻譯成SQL語法,就不需要自己寫SQL,但這並不代表學習SQL不重要。
因為目前還沒有資料,所以是0
試著透過 tinker 新增資料:
$b = new Book
$b->title = “為你自己學Laravel”
$b->description = “很厲害”
$b->price = 100
$b (看目前新增那些資料)
$b->save();
最後有save(); 才有存進資料庫
另一種新增寫法:
為了防止被大量塞進可能有疑慮的資料,所以laravel禁止以下寫法 Book::create($data)
如果想要大量寫入,就必須到Model(此處是app/Models/Book.php)加上可以開放大量寫入的欄位名稱,如下:
重新執行 php artisan tinker ,再次輸入 $data = [“title” => “為你自己學 Ruby on Rails”,”description” => “也很厲害”, “price” => 200];
大量新增語法 Book::create($data) 就能看到資料新增進去了
protected $fillable = [ //在此加上可以開放大量寫入欄位的欄位名稱
'title',
'description',
'price',
'available'
];
$fillable 有點像是寫入白名單,透過開放欄位,來確保大批寫入時的資訊安全
接下來在tinker內查詢時,就能看到資料有兩筆了
Book::count()
Book::all()