Laravel 5架構學習之Eloquent (laravel 的ORM),laraveleloquent_PHP教程

來源:互聯網
上載者:User

Laravel 5架構學習之Eloquent (laravel 的ORM),laraveleloquent


我們來產生第一個模型

複製代碼 代碼如下:
php artisan make:model Article
#輸出
Model created successfully.
Created Migration: 2015_03_28_062517_create_articles_table

查看一下產生的檔案 app/Article.php

<?php namespace App;use Illuminate\Database\Eloquent\Model;class Article extends Model { //}

沒什麼特別的,除了繼承自 Model 以外,但是具有強大的功能,這些都封裝在laravel的Model中。模型自動具有了 save() update() findXXX() 等強大的功能。

tinker 是 laravel提供的命令列工具,可以和項目進行互動。

php artisan tinker#以下是在tinker中的互動輸入Psy Shell v0.4.1 (PHP 5.4.16 — cli) by Justin Hileman>>> $name = 'zhang jinglin';=> "zhang jinglin">>> $name=> "zhang jinglin">>> $article = new App\Article;=>  {}>>> $article->title = 'My First Article';=> "My First Article">>> $article->body = 'Some content...';=> "Some content...">>> $article->published_at = Carbon\Carbon::now();=>  {    date: "2015-03-28 06:37:22",    timezone_type: 3,    timezone: "UTC"  }>>> $article;=>  {    title: "My First Article",    body: "Some content...",    published_at:  {      date: "2015-03-28 06:37:22",      timezone_type: 3,      timezone: "UTC"    }  }>>> $article->toArray();=> [    "title"    => "My First Article",    "body"     => "Some content...",    "published_at" =>  {      date: "2015-03-28 06:37:22",      timezone_type: 3,      timezone: "UTC"    }  ]>>> $article->save();=> true#查看資料結果,添加了一條記錄>>> App\Article::all()->toArray();=> [    [      "id"      => "1",      "title"    => "My First Article",      "body"     => "Some content...",      "published_at" => "2015-03-28 06:37:22",      "created_at"  => "2015-03-28 06:38:53",      "updated_at"  => "2015-03-28 06:38:53"    ]  ]>>> $article->title = 'My First Update Title';=> "My First Update Title">>> $article->save();=> true>>> App\Article::all()->toArray();=> [    [      "id"      => "1",      "title"    => "My First Update Title",      "body"     => "Some content...",      "published_at" => "2015-03-28 06:37:22",      "created_at"  => "2015-03-28 06:38:53",      "updated_at"  => "2015-03-28 06:42:03"    ]  ]  >>> $article = App\Article::find(1);=>  {    id: "1",    title: "My First Update Title",    body: "Some content...",    published_at: "2015-03-28 06:37:22",    created_at: "2015-03-28 06:38:53",    updated_at: "2015-03-28 06:42:03"  }>>> $article = App\Article::where('body', 'Some content...')->get();=>  [     {      id: "1",      title: "My First Update Title",      body: "Some content...",      published_at: "2015-03-28 06:37:22",      created_at: "2015-03-28 06:38:53",      updated_at: "2015-03-28 06:42:03"    }  ]>>> $article = App\Article::where('body', 'Some content...')->first();=>  {    id: "1",    title: "My First Update Title",    body: "Some content...",    published_at: "2015-03-28 06:37:22",    created_at: "2015-03-28 06:38:53",    updated_at: "2015-03-28 06:42:03"  }>>> >>> $article = App\Article::create(['title' => 'New Article', 'body' => 'New body', 'published_at' => Carbon\Carbon::now()]);Illuminate\Database\Eloquent\MassAssignmentException with message 'title'

MassAssignmentException,laravel保護我們不能直接插入記錄。比如,在一些特殊情況下我們需要直接利用表單的資訊填充資料庫記錄,但是如果我們並沒有在表單中添加密碼欄位,而駭客產生了密碼欄位連同我們的其他欄位一起送回伺服器,這將產生修改密碼的危險,所以我們必須明確的告訴laravel我們的模型那些欄位是可以直接填充的。

修改我們的模型檔案 Article.php

<?php namespace App;use Illuminate\Database\Eloquent\Model;class Article extends Model { protected $fillable = [    'title',    'body',    'published_at'  ];}

表示,title, body, published_at 是可以直接填充的。

退出 tinker,重新進入

>>> $article = App\Article::create(['title' => 'New Article', 'body' => 'New body', 'published_at' => Carbon\Carbon::now()]);=>  {    title: "New Article",    body: "New body",    published_at:  {      date: "2015-03-28 06:55:19",      timezone_type: 3,      timezone: "UTC"    },    updated_at: "2015-03-28 06:55:19",    created_at: "2015-03-28 06:55:19",    id: 2  }  # It's ok>>> App\Article::all()->toArray();=> [    [      "id"      => "1",      "title"    => "My First Update Title",      "body"     => "Some content...",      "published_at" => "2015-03-28 06:37:22",      "created_at"  => "2015-03-28 06:38:53",      "updated_at"  => "2015-03-28 06:42:03"    ],    [      "id"      => "2",      "title"    => "New Article",      "body"     => "New body",      "published_at" => "2015-03-28 06:55:19",      "created_at"  => "2015-03-28 06:55:19",      "updated_at"  => "2015-03-28 06:55:19"    ]  ]>>> $article = App\Article::find(2);=>  {    id: "2",    title: "New Article",    body: "New body",    published_at: "2015-03-28 06:55:19",    created_at: "2015-03-28 06:55:19",    updated_at: "2015-03-28 06:55:19"  }>>> $article->update(['body' => 'New Updaet Body']);=> true#update自動調用save()

以上所述就是本文的全部內容了,希望能夠對大家學習Laravel5架構有所協助。

http://www.bkjia.com/PHPjc/980213.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/980213.htmlTechArticleLaravel 5架構學習之Eloquent (laravel 的ORM),laraveleloquent 我們來產生第一個模型 複製代碼 代碼如下: php artisan make:model Article #輸出 Model creat...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.