我正在使用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);
});
});