php - 使用 Laravel Eloquent 创建模型和获取信息的最佳实践是什么?
问题描述
我想知道使用 Laravel 框架创建模型的最佳方法是什么?据我所知,该模型用于连接到数据库表,然后,您可以对其数据做任何您想做的事情。
为每个 DB 表创建一个新模型(如此处所述)并不好,应该为每个业务对象创建模型。不知道这意味着什么。我想使用 Eloquent 访问同一张表并从中获取一些信息,类似于:
<?php
// Get the model class
use App\Post;
// Grab some data from the posts table
$posts = Post::all();
但它需要有一个模型。使用select
方法,例如:
$posts = DB::table('posts')->select('title, body')->get();
不需要模型所以我不太明白模型的意义何在?我在 Laravel 文档中找不到足够的信息:https ://laravel.com/docs/5.6/eloquent 。
解决方案
作为对您问题的完整解释:
使用方法:
<?php
// Get the model class
use App\Post;
// Grab some data from the posts table
$posts = Post::all();
将与运行如下查询相同:
<?php
$posts = DB::table('posts')->select('*')->get();
但最大的不同是前者返回的是 Eloquent 对象,后者返回的是普通对象。第一个模型需要一个模型,它扩展了 eloquent,后面的方法是使用 DB 类,它没有扩展 eloquent。所以当你想使用 Eloquent 时,你必须使用模型。
为每个数据库表创建一个新模型(如此处所述)并不好,应该为每个业务对象创建模型。不知道这意味着什么。
实体是诸如用户、帖子、评论、消息之类的东西,但不是诸如 user_has_posts 或 user_has_messages 之类的关系表。不完全确定如何解释它,但我相信你会明白的。
还要记住,模型应该只包含数据库逻辑,我已经看到很多次人们使用模型来过滤数组,但这不应该属于模型。
推荐阅读
- javascript - 将对象转换为数字(数组)
- c# - 优化解析文本文件,然后上传到Excel
- c# - 根据 DataGridView 选择显示图像会引发错误
- java - 使用 JSlider 更改图像亮度
- python - 检查给定的 *args 和 **kwargs 是否满足给定的函数签名(python2中的Signature.bind())
- python - 如何使用 bash 启动多个龙卷风实例
- complex-event-processing - 使用 CEP 在几秒钟后未发生事件时触发
- node.js - 使用 IdentityServer4 在标头中传递访问和刷新令牌
- db2 - DB2 查询多选并按日期求和
- python - pandas 计算组的列值均值和整个数据帧的均值