php - 被连接覆盖的 ID 列

标签 php mysql laravel laravel-4 eloquent

使用 Laravel 4.2 和 MySQL。

我有一个包含 idfit_score_id 列的 applications 表,以及一个包含id 列。这是一种基本的“属于”关系。

以下代码:

$query = Application::join('fit_scores', 'applications.fit_score_id', '=', 'fit_scores.id');
$collection = $query->get();

...生成 Application 模型的集合,其中 id 属性设置为 fit_score_id 的值。我在做什么导致了这种情况?

我应该指出,有必要执行此连接而不是简单地使用 Eloquent 关系,因为我想按 fit_scores 表上的列对结果进行排序。我不相信在没有显式连接的情况下使用 Eloquent 是不可能的。

最佳答案

解决此问题的最佳方法是将 join 方法链接到 select 方法,如下所示:

Application::select('*', \DB::raw("applications.id as appid"))
             ->join('fit_scores', 'applications.fit_score_id', '=', 'fit_scores.id')
             ->get();

解释:该解决方案简单地建议,我们可以 Hook 到主选择查询(在加入之前)并将 id 列的标签更改为其他内容,而不是考虑防止用加入的 id 覆盖第一个 id 的行为(在本例中为“appid”)。通过这样做,我们最终将父表的 ID 标记为“appid”,并将连接表的 ID 再次标记为“id”,同时它们在最终结果上共存。

关于php - 被连接覆盖的 ID 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30580874/

相关文章:

php - 通过lastInsertId()获取ID安全吗?

php - 使用 laravel 拒绝 .composer/config 文件权限

php - Prestashop - 购物篮总价

PHP/MySQL 有 SELECT...INSERT 和/或 SELECT...INSERT...DELETE

MySQL 默认程序

MySQL:从多个表获取字段,每个结果表示为一行

mysql - 根据子模型/关系对父模型进行排序

json - 如何从 Laravel 中的 json 响应中删除斜杠

php - 如何从 Codeigniter Controller 中分离 Ajax 响应中的 View 和数据

php - 将 PHP 对象插入到 MONGODB 中