我有一个表,称为消息和用户。 users是laravel auth生成的默认用户表。由于某些原因,当我尝试返回时,我的控制器中的postMessage函数
return response()->json(['s' => $broadcastMessage, 'r' => $broadcastMessage->MessageOwner()]);
关系船返回一个空对象。我知道
MessageOwner
关系有效,因为我在其他函数中使用了它,并且效果很好,但我不知道为什么它在这里不起作用?我确定,它存储了user_id,它是正确的ID。
注意,它确实会返回消息。
这里是向上迁移功能
Schema::create('messages', function (Blueprint $table) { $table->bigIncrements('id'); $table->bigInteger('user_id')->unsigned()->index(); $table->foreign('user_id')->references('id')->on('users'); $table->longText('message'); $table->timestamps(); });
这是我的消息模型
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Message extends Model { protected $table = 'messages'; protected $fillable = [ 'user_id', 'message' ]; public function user() { return $this->belongsTo(User::class, 'user_id', 'id'); } public function MessageOwner() { return $this->belongsTo(User::class, 'user_id', 'id'); } public function job() { return $this->belongsToMany(Job::class); } }
这是我的控制器功能
public function postMessage(Request $request)
{
try {
$message = Message::create([
'user_id' => $request->input('user_id'),
'message' => $request->input('message')
]);
$job = Job::find($request->input('job_id'));
$job->messages()->attach($message);
$broadcastMessage = Message::find($message->id);
return response()->json(['s' => $broadcastMessage, 'r' => $broadcastMessage->MessageOwner()]);
event(new MessagePushed($broadcastMessage));
return response()->json([
'success' => true,
'message' => 'success',
]);
} catch (\Exception $exception) {
return response()->json([
'success' => false,
'error' => true,
'message' => $exception->getMessage()
], 500);
}
}
我有一个表,称为消息和用户。 users是laravel auth生成的默认用户表。由于某些原因,当我尝试返回return ...
您正在调用关系方法,而不是它的值。