Laravel 500内部服务器错误AJAX



我正在使用Laravel和Ajax开发一个网站。当我尝试使用Hasmany方法返回属于特定用户(用户模型(的所有消息(消息模型(时,我有问题。

web.php

Route::get('/test', 'UserController@testFunction');
Route::post('/test', 'UserController@testFunction');

usercontroller.php

public function testFunction(Request $request) {
    if ($request->isMethod('post')) {
        $messages = User::find(1)->messages;
        return $messages;
    } else {
        return 'get method';
    }
}

用户模型

class User extends Authenticatable {
    use Notifiable;
    protected $fillable = [
        'name', 'email', 'password',
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];
    public function messages() {
        $this->hasMany('AppMessage', 'from');
    }
}

消息模型

class Message extends Model {
    protected $fillable = [
        'from', 'to', 'content'];
}

然后我有两个按钮(仅用于测试 - 发布并获取(。他们由此 JavaScript代码

处理
window.onload = function() {
    // AJAX Setup
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    // Post Method
    $('#postMethod').click( function() {
        $.post('test', function (data) {
            console.log(data);
        });
    });
    // Get Method
    $('#getMethod').click(function() {
        $.get('test', function(data) {
            console.log(data);
        });
    });
}

数据库中的表具有一个结构,如下所示:

  • 用户表
  • 消息表

当我单击发布按钮(通过上面的JavaScript代码处理(时,我在控制台中收到此错误:Console中的错误

例如,如果我将$messages = User::find(1)->messages;更改为$messages = User::find(1)->name;,我将ID 1的用户的名称正常返回到控制台。

我认为usercontroller.php中的messages((函数有问题。也许是"来自"作为外国钥匙的?这只是我的猜测,也许错误在其他地方,请自己看看。

这是您的修复程序,您需要调用将返回关系实例的messages()这样的消息。

public function testFunction(Request $request) {
if ($request->isMethod('post')) {
    $messages = User::find(1)->messages();
    return $messages;
} else {
    return 'get method';
}
}

希望这会有所帮助。

/测试。尝试这个

// Post Method
    $('#postMethod').click( function() {
        $.post('/test', function (data) {
            console.log(data);
        });
    });
    // Get Method
    $('#getMethod').click(function() {
        $.get('/test', function(data) {
            console.log(data);
        });
    });

最新更新