【问题标题】:Laravel 4 eloquent + raw query returns NULLLaravel 4 雄辩 + 原始查询返回 NULL
【发布时间】:2013-09-20 04:17:14
【问题描述】:

如果在我的 Place 模型中有这种关系:

public function openhours()
{
  return $this->hasOne('Hours')->select(DB::raw("IF(CURTIME() BETWEEN open_time AND close_time ,'Open','Closed')"));
}

在我的路线中:

 $place = Place::with('openhours')->where('id', '=', 5)->get();

我的桌子:

Table Name : hours
Fields : 
id          int(11)
place_id    int(11)
open_time   time
close_time  time

表格记录:

id: 1
place_id: 5
open_time: 10:00:00
close_time: 17:00:00

它只是返回:

 openhours:null

当我在 phpmyadmin 中手动运行此查询时,它工作正常。

我做错了什么?

提前致谢。

【问题讨论】:

  • select() 用于查询中所需的列。我认为您最好为您确定该位置是否打开的模型创建一个访问器。顺便说一句,你为什么把时间放在一个单独的表中?
  • 感谢您的回复,由于每天的营业时间不同,我将时间放在单独的表格中。我仍然需要将日期字段放入

标签: mysql laravel laravel-4 eloquent


【解决方案1】:

将以下内容添加到您的 App:before 过滤器中,您将获得所有正在执行的查询和绑定的转储。

DB::listen(function($sql, $bindings, $time)
{
    var_dump($sql);
    var_dump($bindings);
});

不是一个答案,但它可能会帮助您了解雄辩的请求与您自己的 SQL 的比较。

【讨论】:

  • 雄辩的请求和我自己的sql一样,如果在phpmyadmin中运行就可以了
【解决方案2】:

你不需要更多喜欢吗?

Place::find($id)->openhours();

【讨论】:

  • 感谢您的回答!但是如何使用 Place::find($id)->openhours();我确实收到了 sql 请求,但没有收到地点数据和 Place::find($id)->with('openhours')->first();我得到了地点数据,但开放时间为 NULL。这不是一回事吗?
猜你喜欢
  • 2018-03-09
  • 1970-01-01
  • 2018-01-31
  • 2016-09-14
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
相关资源
最近更新 更多