【问题标题】:Cant retrieve user by ID in Laravel 5.5无法在 Laravel 5.5 中按 ID 检索用户
【发布时间】:2020-07-27 23:11:07
【问题描述】:

我不知道我做错了什么,但我认为这是我眼皮底下的东西。

我正在尝试按 ID 从数据库中检索多行,方法是从原始查询中减去一个数字,如下所示:

$week4 = DB::table('weekly_territory_data')->where([['area_id', '=', $area_id], ['start_date', '=', $startDate]])->first();

Log::info(print_r($week4, true));

$selectedWeekId = $week4->id;
$selectedWeekIdSub2 = $selectedWeekId - 236;
$selectedWeekIdSub3 = $selectedWeekId - 472;
$selectedWeekIdSub4 = $selectedWeekId - 708;

Log::info($selectedWeekIdSub4);

$week1 = DB::table('weekly_territory_data')->where('id', '=', $selectedWeekIdSub4)->first();

Log::info(print_r($week1,true));

我知道我得到了正确的 ID 号,但我无法使用我拥有的代码检索行。这里发生了什么?是否存在某种确切的案例问题?

【问题讨论】:

  • I can't retrieve the rows - 这是什么意思?具体一点 - 您的意思是查询工作正常,但您得到的$week1 的结果集为空?你的Logging 的结果是什么?您的标题中提到的用户 ID 在哪里?最简单的解释是没有与您的查询匹配的记录。你100%确定不是这样吗?你没有在这里排除它,也没有向我们展示任何表明不是这种情况的东西。
  • 它正在返回一个对象。如何访问对象中的 ID?
  • @User14289 $week1->id 是成功的秘诀。

标签: database laravel laravel-5 laravel-query-builder


【解决方案1】:

我强烈推荐使用Eloquent, 假设您创建了一个模型WeeklyTerritoryData 您的查询应如下所示:

$week1 = WeeklyTerritoryData::find($selectedWeekIdSub4)->first();

$week1 = WeeklyTerritoryData::where('id',$selectedWeekIdSub4)->first();

这将返回一个Collection,然后您可以访问 id 或任何其他类似这样的字段:

$week1->id

【讨论】:

  • 在我的数据库中似乎存在 ID 字段问题...当我查看服务器上的日志时,它显示:[id] => 3131 ...必须是一些非法字符
  • 您使用的语言不是英语吗?
  • 我一定是错误地导入了数据库,我使用的是英文... csv 中一定有某种字符,或者 mysql 工作台中的数据导入向导中存在某种字符。呃
【解决方案2】:

问题在于类型转换。

我试图获取带有 ID 的数据集,将其视为整数...但出于某些愚蠢的原因,我的 ID 列是字符串。

    $selectedWeekId = $week4->id;

    $week3id = $selectedWeekId - 236;
    $week3string = (string) $week3id;
    $week3 = WeeklyTerritoryData::where('id', '=', $week3string)->get();

    Log::info('week3 to follow');
    Log::info($week3);
    $week2id = $selectedWeekId - 472;
    $week2string = (string) $week2id;
    $week2 = WeeklyTerritoryData::where('id', '=', $week2string)->get();

    Log::info('week2 to follow');
    Log::info($week2);

    $week1id = $selectedWeekId - 708;
    $week1string = (string) $week1id;
    $week1 = WeeklyTerritoryData::where('id', '=', $week1string)->get();

【讨论】:

    猜你喜欢
    • 2018-09-28
    • 2021-06-22
    • 1970-01-01
    • 2014-08-08
    • 2014-01-26
    • 1970-01-01
    • 2017-06-06
    • 2019-03-09
    • 2018-04-07
    相关资源
    最近更新 更多