Laravel 5 LEFT JOIN问题与ID的

强硬派

我对LEFT JOIN有问题。我不想使用雄辩的关系,因为我想保持我的模型文件夹干净。我有一个约会应用程序,在其中使用“标签”和“状态”。我希望能够根据标签和状态过滤视图。LEFT JOIN的问题在于,当我想单击编辑链接时,它使用的是我的“ appointments_statuses”表中的“ id”字段,而不是“ appointments”表。下面是相关代码:

我的控制器:

$appointments = $query->orderBy('appointment', 'asc')
->leftJoin('appointments_labels','appointments_labels.id','=','appointments.label_id')
->leftJoin('appointments_statuses','appointments_statuses.id','=','appointments.status_id')
->get();

我的看法:

@foreach($appointments as $appointment)
    <a href="#">{{ $appointment->id }}</a> // Problem here, it uses the "status_id" field from the "appointments" table instead of the "id" field
@endforeach

我的数据库表:

CREATE TABLE IF NOT EXISTS `appointments` (
`id` int(11) NOT NULL,
`appointment` varchar(255) NOT NULL,
`location` varchar(255) NOT NULL,
`description` text NOT NULL,
`start` datetime NOT NULL,
`end` datetime NOT NULL,
`label_id` int(11) NOT NULL,
`status_id` int(11) NOT NULL,
`contact` int(11) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
)

CREATE TABLE IF NOT EXISTS `appointments_labels` (
`id` int(11) NOT NULL,
`label` varchar(255) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
)

CREATE TABLE IF NOT EXISTS `appointments_statuses` (
`id` int(11) NOT NULL,
`status` varchar(255) NOT NULL,
`flag` varchar(255) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
)
达米安·皮西(Damien Pirsy)

好吧,这是因为您的查询收集了3个表的所有字段,因此具有相同名称的列将被覆盖。只需select()在所需字段上使用a (无论如何都是一种好习惯):

$appointments = $query->orderBy('appointment', 'asc')
->leftJoin('appointments_labels','appointments_labels.id','=','appointments.label_id')
->leftJoin('appointments_statuses','appointments_statuses.id','=','appointments.status_id')
->select('appointments.id', 'appointments.name', '........', 'appointments_statuses.name', 'appointments_labels.name')
->get();

注意:我正在猜测要从主表和联接表中获取的字段,但是您知道了:)注意2
您还可以将array值的一个传递select()方法:

->select(['appointments.id', 'appointments.name', ....])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查询搜索 LIKE 使用关键字 where 和 left join LARAVEL 5

来自分类Dev

LEFT JOIN with Exists 的问题

来自分类Dev

Laravel雄辩的LEFT JOIN WHERE NULL

来自分类Dev

Laravel 5问题与wherePivot

来自分类Dev

在 rails5 / mysql 中制定 left_join 查询的问题

来自分类Dev

Laravel join 和 left join 在一个查询中

来自分类Dev

MYSQL中的LEFT JOIN问题

来自分类Dev

Laravel 5的Route :: bind()问题

来自分类Dev

Laravel 5中的表单问题

来自分类Dev

使用 Laravel 5 的 cURL 问题

来自分类Dev

Rails 5 Left Outer Join 结合 WHERE 查询

来自分类Dev

Laravel Left join在右侧表中添加where子句

来自分类Dev

使用Laravel查询构建器和LEFT JOIN删除行

来自分类Dev

使用Laravel查询构建器和LEFT JOIN删除行

来自分类Dev

Laravel Left join在右侧表中添加where子句

来自分类Dev

LINQ Left Join -Where语句问题

来自分类Dev

MySQL查询Left Join问题获取数据

来自分类Dev

使用 Left Join 的 SQL 查询中的问题

来自分类Dev

Laravel 5,join子句中的派生表?

来自分类Dev

Laravel 5-Nginx / PHP配置问题

来自分类Dev

Laravel 5:定义路线面临的问题

来自分类Dev

Laravel链接CSS资产的5个问题

来自分类Dev

laravel 5的CKFinder身份验证问题

来自分类Dev

Laravel 5 / Apache 2.4.9配置问题

来自分类Dev

Laravel 5关于共享主机问题

来自分类Dev

Laravel 5-Nginx / PHP配置问题

来自分类Dev

laravel 5的CKFinder身份验证问题

来自分类Dev

Laravel 5属性变量-Getter问题

来自分类Dev

Laravel 5中的group_concat()问题