繁体   English   中英

Laravel 500内部服务器错误Ajax

[英]Laravel 500 Internal Server Error 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('App\Message', 'from');
    }
}

讯息模型

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

然后,我有两个按钮(仅用于测试-POST和GET)。 它们由此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);
        });
    });
}

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

当我单击POST按钮(由上述javascript代码处理)时,我在控制台中收到此错误:控制台中的错误

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

我假设UserController.php中的messages()函数出了点问题。 也许“从”作为外键? 这只是我的猜测,也许错误在其他地方,请自己看看。

/测试。 尝试这个

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

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

这是您的解决方法,您需要调用类似于messages()消息,这些messages()将返回关系实例。

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

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM