[英]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.