我刚创建了一个新项目来开始使用laravel中的多态关系,但我遇到了错误。
我有三种型号。
图书
<?php
namespace App\models;
use Illuminate\Database\Eloquent\Model;
class Book extends Model
{
public $timestamps = false;
protected $table = 'books';
public function comments()
{
return $this->morphMany('App\models\Comment', 'commentable');
}
}
电影
<?php
namespace App\models;
use Illuminate\Database\Eloquent\Model;
class Movie extends Model
{
protected $table = 'movies';
public function comments()
{
return $this->morphMany('App\models\Comment', 'commentable');
}
}
和评论:
namespace App\models;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
protected $table = 'comments';
public function commentable()
{
return $this->morphTo();
}
}
我收到一个错误,通过雄辩来保存数据。这是我正在运行的功能:
$book = Book::find(2);
$c = new Comment();
$c->body = 'currently reading';
//$output = print_r($book)
Log::info($book);
$book->comments->save($c); //error
return view('welcome');
但是我收到以下错误:
Call to undefined method Illuminate\Database\Eloquent\Collection::save()
我浏览了各种链接,所有这些链接似乎都使用了save()
函数。请帮我弄清楚错误。
据我所知,'$ book-&gt; comments'可能会返回一个集合,我无法运行保存,但那么出路是什么?
我正在关注this教程,这是以同样的方式进行的。
答案 0 :(得分:1)
$ book是一个集合,只需使用first()并使用$ book-&gt; comments() - &gt; save($ c)。
$book = Book::find(2)->first();
$c = new Comment();
$c->body = 'currently reading';
$book->comments()->save($c);