Laravel Model不检索数据

Laravel Model不检索数据

问题描述:

Im using laravel to pull some log information from a database, but all of a sudden its stopped working, as in its not retrieving data and not returning anything. Im using vuejs to retrieve the data without page refresh, theres no problem on the front end because data can still be retrieved also in the chrome debug console its displaying as a 500 error.

Furthermore what i find weird is it works locally but not in production.

Example code of what works and what doesn't

 <?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;
    }

}

and heres the logs model, which shouldnt really affect anything but entering data into the database really but just incase anyone needs this information.

namespace App;

use Illuminate\Database\Eloquent\Model;

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

Any help i get will be appreciated.

The answer to this question can be found here in detail: Limit on amount of rows retrieved MySql, Laravel

In short my Mysql query was pulling back more than my set limit of data due the the growing daily data of my logs table. Increased the limit and everything was working as usual.

I would check the php5 error file, check your php.ini for the location of the error file on the production machine. 500s missing in the logs endup in the php error file log sometimes. There can be a memory leak e.g a string too long for php memory to process it since its returing a log entry which can sometimes be long.

Also, Can you make the select statement as the first thing that you pass to the model like this (won't solve the issue at hand but its best practice to do so )

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