我正在關注laravel教程,並創建了一個表單,以便使用user_id創建對帖子的評論。我似乎無法理解我如何傳遞user_id。發送用戶ID和發帖ID
Post
模型
class Post extends Model
{
protected $guarded = [];
public function comments()
{
return $this->hasMany(Comment::class);
}
public function addComment($body)
{
$this->comments()->create(compact('body'));
}
public function user()
{
return $this->belongsTo(User::class);
}
}
Comment
模型
class Comment extends Model
{
protected $guarded = [];
public function post()
{
$this->belongsTo(Post::class);
}
public function user()
{
$this->belongsTo(User::class);
}
}
User
模型
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function posts()
{
return $this->hasMany(Post::class);
}
public function comments()
{
return $this->hasMany(Comment::class);
}
public function publish(Post $post)
{
$this->posts()->save($post);
}
}
CommentsController.php
class CommentsController extends Controller
{
public function store(Post $post)
{
$this->validate(request(), ['body' => 'required|min:2']);
$post->addComment(request('body'));
return back();
}
}
正如你所看到的,我在Post
模型中調用->addComment
來添加評論。它工作得很好,直到我將user_id添加到Comments
表中。什麼是存儲用戶ID的最佳方式?我無法讓它工作。
它的工作原理。但是,有沒有更好的方法來做到這一點?例如,我在'user'模型中用'publish function'提交我的文章。它自動獲取user_id。 – twoam
@JustinTime檢查我的更新! – Maraboc
我打電話給未定義的方法Illuminate \ Database \ Query \ Builder :: comments() – twoam