【发布时间】:2018-02-07 14:11:02
【问题描述】:
我有一个包含 3 个表的数据库:user、statuses 和 friends。
我的状态表有一个关系列“父 ID”,它为 NULL,但存储了回复状态的用户的 user_id。下面是我的 Status.php 代码:
namespace Pictogram\Models;
use Illuminate\Database\Eloquent\Model;
class Status extends Model
{
protected $table = 'statuses';
protected $fillable = [
'body'
];
public function user()
{
return $this->belongsTo('Pictogram\Models\User', 'user_id');
}
public function scopeNotReply($query)
{
return $query->whereNull('parent_id');
}
public function replies()
{
return $this->hasMany('Pictogram\Models\Status', 'parent_id');
}
}
并且打击来自我的路线文件:这控制对状态的回复
Route::post('/status', [
'uses' => '\Pictogram\Http\Controllers\StatusController@postStatus',
'as' => 'status.post',
'middleware' => ['auth'],
]);
Route::post('/status/{statusId}/reply', [
'uses' => '\Pictogram\Http\Controllers\StatusController@postReply',
'as' => 'status.reply',
'middleware' => ['auth'],
]);
还有我的状态控制器 .php
class StatusController extends Controller
{
public function postStatus(Request $request)
{
$this->validate($request, [
'status' => 'required',
]);
Auth::user()->statuses()->create([
'body' => $request->input('status'),
]);
return redirect()
->route('home')
->with('info', 'Status updated.');
}
public function postReply(Request $request, $statusId)
{
$this->validate($request, [
"reply-{$statusId}" => 'required',
], [
'required' => 'The reply body is required.'
]);
$status = Status::notReply()->find($statusId);
if (!$status) {
return redirect()->route('home');
}
if (!Auth::user()->isFriendsWith($status->user) && Auth::user()->id !== $status->user->id)
{
return redirect()->route('home');
}
$reply = Status::create([
'body' => $request->input("reply-{$statusId}"),
])->user()->associate(Auth::user());
$status->replies()->save($reply);
return redirect()->back();
}
}
最后这是模型 .php 的第 2673 行:
protected function getRelationshipFromMethod($method)
{
$relations = $this->$method();
if (! $relations instanceof Relation) {
throw new LogicException('Relationship method must return an object of type '
.'Illuminate\Database\Eloquent\Relations\Relation');
}
return $this->relations[$method] = $relations->getResults();
}
我正在使用 Laravel 5.2。现在我的问题是回复被保存到表中,因为空的parent_id 然后采用了回复用户的user_id,但随后它会显示一个错误页面,其中包含以下这些错误。
Error1/2
【问题讨论】: