【问题标题】:query builder equivalent of Model::query();查询生成器等效于 Model::query();
【发布时间】:2021-03-18 04:21:16
【问题描述】:

祝你今天好,由于某些原因,我必须使用查询生成器而不是 Eloquent,原因是我的模型名称是 KidsCafe,如果我使用 Eloquent,它将使用 myapp 搜索表。 kidscaves,但表的名称是 kidscafes,这会引发错误,因此我必须在与数据库的交互中使用查询生成器。

现在,我必须实现搜索功能,那么如何使用查询生成器实现类似的功能

$kids = KidsCafe::query();

我的问题是如何使用查询生成器实现 query();,还有没有其他方法可以在没有它的情况下使用 eloquent

提前谢谢你

【问题讨论】:

  • 抛出什么样的错误?
  • SQLSTATE[42S02]: 未找到基表或视图:1146 表 'myapp.kidscaves' 不存在(SQL: select * from kidscaves where kidscaves.deleted_at is null )
  • @GazmendSahiti ,这是我使用 eloquent 时的错误,这就是为什么我的所有查询都在查询生成器上,但我不知道用于 query() 的语法跨度>

标签: php database laravel eloquent


【解决方案1】:

您可以通过在模型上定义表属性来手动指定表名:

class KidsCafe extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'kidscafes';
}

【讨论】:

  • 谢谢,它解决了我的问题,但是没有其他查询构建器语法相当于 eloquent Model::query();
  • @KINGSLEYOKPARA 好消息!您可以使用没有“模型”的查询构建器,例如 DB::table('kidscafes')->get();查看 Laravel 文档以获取更多详细信息laravel.com/docs/8.x/queries
【解决方案2】:

你也可以使用 setTable() 函数动态地使用另一个表的名字,像这样 -

$kidscafes = new KidsCafe;
$kidscafes->setTable('kidscafes');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 2021-09-03
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多