创建此查询时:
$data = DB::table('data')
->leftJoin('urls', 'data.url_id', '=', 'urls.id')
->where('urls.tag', $tag)
->where('urls.requester_id', $requester_id)
->orderBy('data.created_at')
->take(100);
然后获取第一行以对其执行一些验证:
$sample = $data->first();
即使我使用get()
:
$all_rows = $data->get();
我尝试执行以下操作,但它不会阻止$data
中结果集的其余部分丢失:
$first = $data;
$sample = $first->first();
$all_rows = $data->get(); // Still results in the same contents as `$sample`
也尝试了这个,但结果相同:
$all_rows = $data->getFresh();
这里发生了什么,我该如何解决这个问题?
答案 0 :(得分:0)
$data = DB::table('data')
->leftJoin('urls', 'data.url_id', '=', 'urls.id')
->where('urls.tag', $tag)
->where('urls.requester_id', $requester_id)
->orderBy('data.created_at')
->get();
$sample = $data[0];
答案 1 :(得分:0)
$data = DB::table('data')
->leftJoin('urls', 'data.url_id', '=', 'urls.id')
->where('urls.tag', $tag)
->where('urls.requester_id', $requester_id)
->orderBy('data.created_at')
->get();
将返回与您的预期匹配的所有数据。以下是第一个结果。
$first = $data->first();
在doc。
上阅读get()和first() ->get()
返回一个数组,以便您可以尝试以下内容
$first = $data[0]