laravel中的软删除不会在视图中隐藏记录

林·勒·纳特

我正在使用雄辩的软删除来删除数据库中的一行。我使用函数destroy,在数据库列中deleted_at有一个日期,但这不是在视图中隐藏已删除的记录。我在控制器中的代码。

$query = Role::join('users', 'roles.id', '=','users.role_id');
$user = User::all();
$users = $query->select('users.*','roles.name as role_name')->paginate(10);

我在用户模型中的代码

use SoftDeletes;
use HasFactory;

protected $table = 'users';
protected $guarded = [];
protected $hidden = [
    'password', 'remember_token', 'deleted_at'
];

public function roles() {
    return $this->belongsTo(Role::class);
}

我在模型角色中的代码

use HasFactory;

protected $table = 'roles';
protected $guarded = [];

public function users() {
    return $this->hasMany(User::class);
}
扎希德·哈桑emon

看来,这里的问题是联接。软删除是一种雄辩的功能,它适用于模型本身,但不适用于联接表。如果必须连接两个表,则必须查询自己以删除已删除的列。就您而言,您可以像

$query = Role::join('users', 'roles.id', '=', 'users.role_id');
$user = User::all();
$users = $query->select('users.*', 'roles.name as role_name')->where('users.deleted_at', null)->paginate(10);

因此这将删除已删除的列。但是当您使用关系时,为什么必须加入自己的行列?关系将为您解决。你可以简单地打电话说

$roles = Role::with('users')->get();

这样您就可以使每个用户都具有以下角色

foreach ($roles as $role) {
    foreach ($role->users as $user) {
        echo $user->attribute;
    }
}

还有给你的便条 您需要将外键名称作为关系定义的第二个参数传递,因为它与laravel的命名约定不匹配。

public function roles() {
    return $this->belongsTo(Role::class, 'role_id');
}

public function users() {
    return $this->hasMany(User::class, 'role_id');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SwiftUI:Picker不会在同一视图中更新文本

来自分类Dev

Laravel会话数据不会在页面加载中停留

来自分类Dev

drawAtPoint不会在视图中呈现文本

来自分类Dev

grizzly不会在请求中记录异常

来自分类Dev

UL不会在移动视图中显示中心

来自分类Dev

剃刀不会在HiddenFor中呈现隐藏的准确PK

来自分类Dev

数据不会在带有Codeigniter的视图中显示

来自分类Dev

Angular js服务值不会在视图中更新

来自分类Dev

文字不会在点击时隐藏

来自分类Dev

Laravel路由组不会在API中返回数据

来自分类Dev

SwiftUI视图不会在单独的视图中更新

来自分类Dev

值不会在视图上更新

来自分类Dev

SwiftUI:Picker不会在同一视图中更新文本

来自分类Dev

为什么addTarget不会在Swift中删除?

来自分类Dev

drawAtPoint不会在视图中呈现文本

来自分类Dev

tagName不会在子视图中启动新的el元素;它从父视图继承

来自分类Dev

在Magento中写问候世界不会在视图中呈现

来自分类Dev

永远不会在“创建”视图中调用远程验证,但在“编辑”视图中会调用远程验证

来自分类Dev

数据不会在Angular视图中加载

来自分类Dev

core-list不会在滚动视图中显示我的所有项目吗?

来自分类Dev

外部文件中的Javascript函数不会在MVC视图中使用其值填充输入

来自分类Dev

如果我在api.onchange方法中更改字段值,则该值不会在视图中更新。为什么?

来自分类Dev

数据不会在带有Codeigniter的视图中显示

来自分类Dev

文字不会在点击时隐藏

来自分类Dev

DisplayFor 助手不会在删除视图中填充数据库中的记录

来自分类Dev

AngularJS 分页表:limitTo 参数不会在视图中更新

来自分类Dev

NoLoggingT 不会在 Persistent 中禁用日志记录

来自分类Dev

GroceryCRUD 隐藏软删除记录

来自分类Dev

导航栏内容不会在移动视图中加载

Related 相关文章

  1. 1

    SwiftUI:Picker不会在同一视图中更新文本

  2. 2

    Laravel会话数据不会在页面加载中停留

  3. 3

    drawAtPoint不会在视图中呈现文本

  4. 4

    grizzly不会在请求中记录异常

  5. 5

    UL不会在移动视图中显示中心

  6. 6

    剃刀不会在HiddenFor中呈现隐藏的准确PK

  7. 7

    数据不会在带有Codeigniter的视图中显示

  8. 8

    Angular js服务值不会在视图中更新

  9. 9

    文字不会在点击时隐藏

  10. 10

    Laravel路由组不会在API中返回数据

  11. 11

    SwiftUI视图不会在单独的视图中更新

  12. 12

    值不会在视图上更新

  13. 13

    SwiftUI:Picker不会在同一视图中更新文本

  14. 14

    为什么addTarget不会在Swift中删除?

  15. 15

    drawAtPoint不会在视图中呈现文本

  16. 16

    tagName不会在子视图中启动新的el元素;它从父视图继承

  17. 17

    在Magento中写问候世界不会在视图中呈现

  18. 18

    永远不会在“创建”视图中调用远程验证,但在“编辑”视图中会调用远程验证

  19. 19

    数据不会在Angular视图中加载

  20. 20

    core-list不会在滚动视图中显示我的所有项目吗?

  21. 21

    外部文件中的Javascript函数不会在MVC视图中使用其值填充输入

  22. 22

    如果我在api.onchange方法中更改字段值,则该值不会在视图中更新。为什么?

  23. 23

    数据不会在带有Codeigniter的视图中显示

  24. 24

    文字不会在点击时隐藏

  25. 25

    DisplayFor 助手不会在删除视图中填充数据库中的记录

  26. 26

    AngularJS 分页表:limitTo 参数不会在视图中更新

  27. 27

    NoLoggingT 不会在 Persistent 中禁用日志记录

  28. 28

    GroceryCRUD 隐藏软删除记录

  29. 29

    导航栏内容不会在移动视图中加载

热门标签

归档