如何处理带有斜线的 Laravel Eloquent “WHERE”查询? (Laravel 5.3)

Posted

技术标签:

【中文标题】如何处理带有斜线的 Laravel Eloquent “WHERE”查询? (Laravel 5.3)【英文标题】:How to handle Laravel Eloquent "WHERE" Query with slash on the value? (Laravel 5.3) 【发布时间】:2017-07-11 23:47:46 【问题描述】:

我的桌子是这样的:

mysql 上,我尝试这样:

SELECT * FROM players WHERE player_type = 'App\Models\Player'

数据不显示

所以,我像这样添加斜线:

SELECT * FROM players WHERE player_type = 'App\\Models\\Player'

数据显示

然后,在 laravel eloquent 中,我尝试这样:

$select = array(
    'player_type'
);
$query = self::where('player_type', '=', 'App\\\Models\\\Player')
             ->paginate(10, $select, 'page', null, null);

数据不显示

我该如何解决?

【问题讨论】:

我可以安全地假设您使用的是morph 关系方法吗? @Omisakin Oluwatobi,是的,我用它 那么您不必担心使用 with 再次询问玩家类型,例如,如果关系是玩家和用户,那么您可以简单地通过 User::with('players')->get() 之类的东西获取 【参考方案1】:

这里只是一种不同的方法,而不是解决方案。

您的所有模型都具有相同的命名空间App\Models\...。如果是这样,那么只需将实际模型保存在您的数据库中,而不使用其命名空间。

id        player_type
 1        Player
 2        Player

稍后在您的控制器中,您获取 palyer 类型并在尝试实例化模型时手动添加命名空间。

【讨论】:

如果不是解决方案,这不应该只是评论吗?

以上是关于如何处理带有斜线的 Laravel Eloquent “WHERE”查询? (Laravel 5.3)的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 laravel 社交名媛“缺少授权异常”

如何处理与 Laravel 的复杂关系?

如何处理 Laravel 到 Vue.js 的布尔值

Laravel 5.4 验证请求,如何处理更新时的唯一验证?

如何处理试图在laravel中获取非对象错误的属性?

如何处理使用相同数据库的两个独立 laravel 项目的迁移?