search
Homephp教程php手册Laravel 5框架学习之Eloquent (laravel 的ORM)

Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库的互动。 每个数据库表会和一个对应的「模型」互动。在开始之前,记得把 config/datab

我们来生成第一个模型

复制代码 代码如下:


php artisan make:model Article
#输出
Model created successfully.
Created Migration: 2015_03_28_062517_create_articles_table

查看一下生成的文件 app/Article.php

没什么特别的,除了继承自 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

表示,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框架有所帮助。

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)