Heim >Backend-Entwicklung >PHP-Tutorial >Laravel学习笔记――文章简单增删改查实例

Laravel学习笔记――文章简单增删改查实例

WBOY
WBOYOriginal
2016-06-20 12:45:101194Durchsuche


Laravel学习笔记―简单的文章增删改查实例

    这是第一次真正鼓捣laravel而学做的第一个简单的实例,虽然这个实例很简单,但是过程中也遇到不少的问题,可谓是历经重重的修改,不断调试才把整个实例的功能实现,因为本人为编程小白,所以在编程的过程中总会遇到很多逻辑上的问题,解决起来有时候真的是抓破头皮都想不出个所以然,不知同样学习过程中的你有木有这种问题存在呢?

好了,接下来是我学习的过程记录。


1. 因为我们这里是利用Laravel里面的ORM模型来操纵数据库的数据的,所以我们第一要先创建数据库和表,这里我以数据库 -> web ,表 -> posts为例。

(1)利用navicai链接到数据库里面,创建数据库web和表posts

(2)往表里填充数据字段,这里是随便填写的,以便测试。

(3)数据库创建完毕之后,接下来的一步就是创建ORM模型文件:

 

 

其中use Illuminate\Database\Eloquent\Model;

是使用了上面路径下的Mode类,以便Post类继承Model类的属性。

 

 

 

public $table = 'posts';

定义了数据库的表为posts

 

public $primarykey = 'id';

定义了表的主键为id

public $timestamps = false;

设置时间戳为false,这里指的是不让系统自动使用createtime_at 和 updatetime_at的功能

 

protected $dateFormat = 'U' ;

设置时间格式为UNIX的时间格式

 

protected $fillable = ['title', 'content','id'];

这里地方尤为需要注意:因为这里fillable是设置白名单的内容,倘若不设置该变量的内容的话,那么后面的编辑和修改数据将会失败,这是写这个程序的过程遇到的一个比较值得注意的地方。

 

2.创建ORM模型之后,我们就可以根据我们的需求来构建我们这个文章的访问路由,实现文章的成功访问,以便映射到对应的视图。

(1)创建index,show,save,edit,delete对应的路由表项,routes文件的内容如下所示:

 

 

其中PostController@index等的控制器动作是控制器PostController里面所定义的方法,实现文章的各项功能的实现调用。

3.定义PostController控制器的方法

(1)其中PostController跟Post模型一样,都要继承相应的父类,就是对应路径下的Controller控制器。

class PostController extends Controller

(2)定义index显示列表的方法

 

 

 

(3)定义$posts 模型实例,因为每一个模型实例都是查询器,所以调用orderby()查询,根据id字段,以升序的方式显示posts表的所以内容。

$posts = Post::orderBy('id', 'asc')->get();

 

 

 

(4)返回指定的视图模板:post目录下的index.blade.php,将$posts的查询内容传递给posts数组

return view('post.index', ['posts' => $posts]);

 

(5)定义show显示每一篇文章的内容方法

  

 

(6)获取传入的id值,然后再用get()函数将内容显示出来

 

$post = Post::where('id', '=', $id)->get();

 

 

(7)返回show视图模板

 

return view('post.show', ['posts' => $post]);

 

(8)定义edit编辑文章的方法

 

 

(9)isset()函数判断id参数是否被设置,如果有则获取其id,否则创建$post模型实例

if (isset($id)) {

        $post = Post::find($id);

} else {
    $post = new Post();
}

 

(10)返回edit视图模板

return view('post.edit')->with('posts', $post);

 

(11)创建save方法

 

 

(12)设置$id =null是对应id可以为可选

public function save(Request $request, $id = NULL)

 

 

(13)如果id没有被设置,则对应创建对应的id字段值,然后让其他输入内容传入创建新的数据,否则更新对应的字段内容


        if (isset($id)) {
//
            Post::updateOrCreate(['id' => $id], $request->input());

        } else {
            Post::create($request->input());
        }

 

(14)定义destroy删除数据的方法

 

 

这个地方比较简单,只要传入对应的id字段的内容,便可对应删除,然后重定向到显示列表的posts/index显示列表的路由上。

 

3.以上控制器的内容定义好之后,接下来便是简单对应视图模板的制作了。

(1)index显示模板

 

 

(2)show显示模板

 

 

(3)edit编辑和新增模板

 

 

 

5.显示测试结果

 

 

 

(1)show测试:

 

(2)Edit测试

 

 

(3)Add测试

 

(4)Delete测试

  

 

问题解决:

1.出现数据无法添加删除,报错日志显示如下:

解决办法:因为没有开启在Post模板中没有定义$fillable白名单内容,所以所以的字段无法更改数据,包括添加数据。

 

简单的文章增删改查实例到此完成,接下来还会继续完善。

 

 


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn