【问题标题】:PHP Red Bean Not returning correct resultPHP Red Bean 未返回正确结果
【发布时间】:2012-05-30 19:00:47
【问题描述】:

我有 3 张桌子。

剧集, 季节, Episode_Season

我有这样的看法

"CREATE VIEW episode_season_view AS SELECT * FROM episode
INNER JOIN episode_season ON episode.id = episode_season.episode_id
INNER JOIN season ON season.id = episode_season.season_id";

顺便说一句,这就像一个魅力...... 现在当我在 MysqlWorkbench 中运行这个查询时

"SELECT * FROM season_episode_view
WHERE first_aired > CURDATE() AND season_id = 600";

它返回正确的结果。 但是当我这样做时,

R::getRow("SELECT * FROM season_episode_view
WHERE first_aired > ? AND season_id = ?", array(date('Y-m-d'), $season_id));

它返回 0 行...我不明白为什么?

【问题讨论】:

  • 如果我把 > 符号换成
  • 您的日期格式是否正确?

标签: php mysql orm redbean


【解决方案1】:

这只是一个猜测,但不是使用 PHP 的日期函数,而是使用 Redbean 的 MySQL 函数,可能还有getAll()

$results=R::getAll("SELECT * FROM season_episode_view 
WHERE first_aired > ? AND season_id = ?", array(R::$f->curdate(), $season_id));

如果这不起作用,您可以尝试内置查询:

$row=R::$f->begin()
  ->select('*')->from('season_episode_view')
  ->where(' first_aired > ? AND season_id = ?')->put(R::$f->curdate(),$season_id)
  ->get('row');

我唯一能想到的另一件事是 first_aired 列不喜欢 PHP 的 date() 出于某种原因,可能是由于字段类型?

【讨论】:

  • 我相信这只是 3.2+。旧版本可能不支持$f 函数或新的选择语法。
  • getAll 的工作方式与 getRow 完全一样,不同之处在于它通过更改 运算符获得了今天日期之前的所有剧集,并且没有更新的剧集。我也没有得到 R::$f->begin() 来返回任何东西,我得到了 3.2+ 版本
  • 不知道该告诉你什么。试试R::find('season_episode_view','first_aired > ? AND season_id = ?',array(R::$f->curdate(),$season_id));
  • 如果这不起作用,那真的是你的表/视图。为什么不跳过尝试查询视图而只在查询中使用 join 语句?
  • 我也试过了,我做了一个程序,都没有运气。我不明白这个。完全奇怪:P
猜你喜欢
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多