【问题标题】:Weird php mysql variable type issue奇怪的php mysql变量类型问题
【发布时间】:2014-05-08 21:00:20
【问题描述】:

现在我承认我对 laravel 还是有点陌生​​,但对我来说这没有任何意义。该表附带的模型仅包含 2 个函数,均包含关系语句。

我正在使用 Laravel4、mysql、php 5.5

欢迎任何想法:D

数据库记录定义适用于 DATETIME,允许 null 和没有默认值(在屏幕截图后更改)

$challenge 变量是我传递给视图的数据的一部分,如下所示:

$challenges = Auth::user()->challenges;
$data['challenges'] = $challenges;

return View::make("challenges/topic", $data);

在我使用的视图中

@foreach($challenges as $challenge)

读取挑战值(我知道如果没有 php 标签或 {{ }},我不能像那样回显,只是更容易解释)

echo gettype($challenge->deadline)   // results in string
echo gettype($challenge->created_at) // results in object

【问题讨论】:

  • 请发布纯文本,而不是通常难以阅读且无法复制粘贴的屏幕截图。
  • created_at 是 Carbon 对象,deadline 是简单的日期时间字符串。阅读 Eloquent 中的日期修改器。真的,WTF 就像 10 岁的男孩在哭,所以下次可能会问真正的问题。
  • @deczo WTF 的本意是眨眼,而不是大喊大叫,但仍然感谢人们的反应。我很清楚 Eloquent 中的突变器,问题是,没有与这些字段相关的其他代码,我采取的所有步骤都粘贴在图像中。数据是全新的,不能在任何其他地方访问:)
  • 我想是的,这就是我回复的原因。日期修改器是 created_atupdated_at 的默认行为,因此您需要禁用它们才能注意到异常影响。
  • @deczo 啊,所以 created_at 和 updated_at 得到特殊处理,即使是 eloquent 如何解析它们?意味着我需要为其他日期时间字段提取额外的字符串? :)

标签: php mysql database laravel eloquent


【解决方案1】:

取决于你如何访问它,如果你这样做:

Route::any('test', ['as' => 'test', function()
{
    $a = Article::first();

    var_dump( gettype($a->created_at) );

    $a = DB::table('articles')->first();

    var_dump( gettype($a->created_at) );

}]);

你会得到:

string 'object' (length=6) /// This is Eloquent

string 'string' (length=6) /// This is the QueryBuilder directly accessing your table

【讨论】:

  • 这实际上非常有用,我不知道 QueryBuilder 的效果。但是我通过 eloquent 解析这两个值,我会将代码添加到我的 OP :)
猜你喜欢
  • 2012-09-04
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多