Laravel Eloquent的技巧分享(示例讲解)

本篇文章给大家带来的内容是关于laravel eloquent的技巧分享(示例讲解),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Laravel 是一个功能丰富的框架。但是,你无法从官方文档中找到所有可用的功能。以下是一些你可能不知道的功能。

1.获取原始属性

当修改一条 Eloquent 模型记录的时候你可以通过调用 getOriginal() 方法获取记录的原始属性

$user = AppUser::first();$user->name;                   //John$user->name = "Peter";         //Peter$user->getOriginal('name');    //John$user->getOriginal();          //原始 $user 记录

2. 检查模型是否被修改

使用 isDirty() 方法确定模型或给定属性是否已被修改

$user = AppUser::first();$user->isDirty();          //false$user->name = "Peter";$user->isDirty();          //true

也可以检查指定属性是否被修改。

$user->isDirty('name');    //true$user->isDirty('age');     //false

3. 获取更改的属性

使用 getChanges() 获取更改的属性

$user->getChanges()//[     "name" => "Peter",  ]

注:仅当您使用  syncChanges() 保存模型或同步更新时,才生效

4. 定义 deleted_at 字段

默认情况下,Laravel使用deleted_at字段处理软删除。 您可以通过定义DELETED_AT属性来更改它。

class User extends Model{    use SoftDeletes;     * The name of the "deleted at" column.     *     * @var string     */    const DELETED_AT = 'is_deleted';}

或者定义访问

巧文书 巧文书

巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

巧文书 61 查看详情 巧文书

class User extends Model{    use SoftDeletes;    public function getDeletedAtColumn()    {        return 'is_deleted';    }}

5. 保存模型和关系

您可以使用push()方法保存模型及其关联。

class User extends Model{    public function phone()    {        return $this->hasOne('AppPhone');    }}$user = User::first();$user->name = "Peter";$user->phone->number = '1234567890';$user->push(); // 这将更新数据库中的用户和电话

6. 重新加载模型

使用 fresh() 重新从数据库加载一个模型。

$user = AppUser::first();$user->name;               // John// user 表被其他进程修改。 例:数据库又插入一条 “name” 为 “Peter” 的数据。$updatedUser = $user->fresh();$updatedUser->name;       // Peter$user->name;              // John

7. 重新加载现有模型

你可以使用 refresh() 方法从数据库重新加载具有新值的现有模型。

$user = AppUser::first();$user->name;               // John// user 表被其他进程修改。例: “name” 被修改为 “Peter” 。$user->refresh();$user->name;              // Peter

注: refresh() 也会更新模型的关联模型数据。

8. 检查模型是否为同一个

使用 is() 方法确定两个模型是否拥有相同主键并且属于同一张表。

$user = AppUser::find(1);$sameUser = AppUser::find(1);$diffUser = AppUser::find(2);$user->is($sameUser);       // true$user->is($diffUser);       // false

9. 克隆一个模型

你可以使用 replicate() 方法来复制一个模型到一个新的对象中。

$user = AppUser::find(1);$newUser = $user->replicate();$newUser->save();

10. 在 find() 方法中指定查找的属性

当使用 find() 或 findOrFail() 方法时,传入第二个参数可以指定需要查找的属性。

$user = AppUser::find(1, ['name', 'age']);$user = AppUser::findOrFail(1, ['name', 'age']);

以上就是Laravel Eloquent的技巧分享(示例讲解)的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/214767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Oracle主目录的功能及其在数据库管理中的应用
上一篇 2025年11月3日 14:25:07
苹果灵动岛怎么关闭震动
下一篇 2025年11月3日 14:25:11

相关推荐

发表回复

登录后才能评论
关注微信