【问题标题】:Corcel/Laravel package conceptCorcel/Laravel 包概念
【发布时间】:2017-06-20 08:44:10
【问题描述】:

我正在完成一个使用 Corcel 包从 Wordpress 数据库中获取数据的项目。我不明白的是,当我浏览代码时,对于一条路线:

Route::get('wp', function () {
    return Corcel\Post::find(106);
});

我从数据库中获取数据,尽管 Laravel 中没有设置 Post 模型。 即使我刚刚使用,我也得到了相同的数据:

return Post::find(106);

所以,我认为使用 Corcel 包,我们可以将模型的名称用于我们想要从中获取数据的表,并且它可以在不先在 Laravel 中定义模型的情况下工作,因为这个示例有效。 但是,然后我尝试查询选项表。像这样:

    Route::get('wp', function () {
        return Corcel\Option::all();
    });

但是,我得到了:

routes.php 第 25 行中的 FatalThrowableError:类 'Corcel\Option' 不是 找到了

如果我这样做:

return Corcel\Options::all();

因为这是 Corcel 包中类的名称,所以我得到:

SQLSTATE[42S02]:未找到基表或视图:1146 表 'middleton.options' 不存在(SQL: select * from options

所以,它会尝试在 laravel 数据库中而不是在 Wordpress 数据库中进行查询 所以,如果有人能解释一下这是如何工作的,我将不胜感激!

【问题讨论】:

    标签: php wordpress laravel


    【解决方案1】:

    刚刚意识到,由于我正在处理遗留代码,因此我没有最新版本的软件包,已修复此问题。

    【讨论】:

      【解决方案2】:

      这个类叫做Options,而不是Option,所以应该是:

      Route::get('wp', function () {
          return Corcel\Options::all();
      });
      

      方法 all() 应该可以从 Laravel Eloquent 基础模型类中的 it extends 开始工作。无论如何,该类似乎有一个方法 getAll() 应该返回更全面的输出 (link)。试试这样:

      Route::get('wp', function () {
          return Corcel\Options::getAll();
      });
      

      希望对你有所帮助。

      编辑:似乎是version issue 用于处理遗留代码。

      【讨论】:

      • 我已经尝试过了,但后来我得到:SQLSTATE[42S02]: Base table or view not found: 1146 Table 'middleton.options' doesn't exist (SQL: select * from `options`) 所以,然后它尝试在 laravel db 中而不是在 Wordpress db 中进行查询
      • @Leff 这可能值得像回购页面中的问题一样发布。
      • @Leff 你应该试试getAll() 方法。它应该返回一个更易读的输出,但它也在后台使用 Eloquent all() 方法,所以你没有机会。
      • @Leff 好吧,那么你应该发布一个问题,如果你觉得它提交 PR,但在我看来显然是一个包错误。
      • @Leff 没问题,我会跟踪问题并用有用的信息更新答案。
      猜你喜欢
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多