laravel - 如何在 Laravel 中通过自定义查询构建器使用预加载

标签 laravel laravel-5 eloquent laravel-5.4 eager-loading

我是 Laravel 5.4 的新手,正在处理一些查询操作。现在我已经使用查询构建器创建了一个查询,如下所示:

$view = DB::table('blocks')
    ->leftjoin('programmes', 'blocks.programme_id', '=', 'programmes.id')
    ->select('blocks.id', 'blocks.programme_id', 'blocks.name', 'blocks.colour', 'blocks.year', 'programmes.title AS programme');  

我还有两个表“日期”和“模块”。每个日期和模块都属于 block 。

现在我想获取所有包含程序、日期和模块的 block 。我知道我可以使用 with() 方法来获取所有这些。但是根据我对 Laravel 的了解,只有当我拥有每个表的模型文件并且它们之间存在关系时,我才能使用 with() 方法。

但不想使用模型和定义它们之间的关系。我只想知道如何在不创建模型并在模型中定义它们之间关系的情况下获取包含程序、日期和模块的 block 数据?有没有其他方法可以在没有模型的情况下使用 with() 方法?

block 日期和模块是有条件的,有时我不想用 block 获取这个表的数据。

请帮我解决这个问题。

最佳答案

你不能自动完成。预加载仅适用于 Eloquent 模型,因此您不能将其与查询构建器一起使用。然而,在大多数情况下,您也可以使用 Eloquent 来获得更复杂的查询(您也可以在使用 Eloquent 时使用连接),因此您将能够使用预加载。

但是如果你根本不想使用 Eloquent,显然你需要创建一些自定义机制来进行预先加载。

关于laravel - 如何在 Laravel 中通过自定义查询构建器使用预加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740747/

相关文章:

javascript - Ajax按钮在刷新页面之前不会改变

php - 在本地环境中禁用 laravel 的 Sentry

php - 如何在 Laravel 的中间件中获取路由

php - 在 Laravel 中扩展开箱即用的用户模型

mysql - 过滤掉多个不喜欢的地方

php - 调用未定义的方法 ConsoleTVs\Charts\Builder::new() laravel

php - 如何使登录的用户对象可用于 Laravel 5.3 中的所有 View

php - Laravel软删除父记录时如何软删除相关记录?

mysql - Laravel Eloquent 地查询条件下来自另一个表的值的总和

php - 如何在 Laravel Eloquent 中插入具有多个 belongsTo 关系的记录