Laravel 模型未检索数据

Laravel Model not retrieving data

我正在使用 laravel 从数据库中提取一些日志信息,但它突然停止工作,因为它既不检索数据也不返回任何内容。我使用 vuejs 在不刷新页面的情况下检索数据,前端没有问题,因为数据仍然可以在 chrome 调试控制台中检索,它显示为 500 错误。

此外,我觉得奇怪的是它在本地有效但在生产中无效。

有效和无效的示例代码

 <?php

namespace App\Http\Controllers;

use App\Log;
use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class LogController extends Controller
{

    public function getLogData()
    {

          //This is the original code & it doesn't work in production! 
          //$data = Log::orderBy('id', 'DESC')->select('action', 'object_id', 'ip_address', 'user', 'time', 'date')->get();

        //This works! But only retrieves 1 row of information
        $data = Log::where('id', 1)->get();

        $data = str_replace('*', "<b>", $data);
        $data = str_replace('^', "</b>", $data);

        return $data;
    }

}

这里是日志模型,除了将数据真正输入数据库外,它不应该真正影响任何东西,只是为了以防万一有人需要此信息。

namespace App;

use Illuminate\Database\Eloquent\Model;

class Log extends Model
{
    protected $fillable = ['action', 'object_id', 'object_type', 'ip_address', 'user', 'time', 'date'];
}

我将不胜感激。

我会检查 php5 错误文件,检查您的 php.ini 生产机器上错误文件的位置。日志中丢失的 500 秒有时会出现在 php 错误文件日志中。可能存在内存泄漏,例如字符串太长,php 内存无法处理它,因为它会返回一个有时可能很长的日志条目。

此外,您能否像这样将 select 语句作为传递给模型的第一件事(不会解决手头的问题,但这样做是最佳实践)

Log::select('action', 'object_id', 'ip_address', 'user', 'time', 'date')
     ->orderBy('id', 'DESC')
     ->get();

这个问题的详细答案可以在这里找到:

简而言之,由于我的日志 table 的每日数据不断增长,我的 Mysql 查询返回的数据超过了我设定的数据限制。增加了限制,一切正常。