我已经能够在雄辩的外部laravel中设置m:m关系并检索记录但我不知道如何添加新记录,因为你没有在代码中创建数据透视表。
如果这些是我的课程,我如何在作者和出版商之间的M:M关系中添加新实例?
<?php
include 'eloquent_database.php';
class Publisher extends Illuminate\Database\Eloquent\Model {
public $timestamps = false;
protected $table = 'publisher';
protected $primaryKey = 'publisher_id';
public function authors (){
return $this->belongsToMany('Author', 'author_publisher', 'publisher_id', 'author_id');
}
}
class Book extends Illuminate\Database\Eloquent\Model {
public $timestamps = false;
protected $table = 'book';
protected $primaryKey = 'book_id';
public function author() {
//related table name, pk in current table,
return $this->belongsTo('Author', 'author_id');
}
}
// Create the company model
class Author extends Illuminate\Database\Eloquent\Model {
public $timestamps = false;
protected $table = 'author';
protected $primaryKey = 'author_id';
public function books()
{
//related table, fk IN related table,
return $this->hasMany('Book', 'author_id');
}
public function publishers (){
return $this->belongsToMany('Publisher', 'author_publisher', 'author_id', 'publisher_id');
}
}
我也需要知道如何删除一个。我已经看过这个文档http://laravel.com/docs/4.2/eloquent#working-with-pivot-tables,但我真的不遵循它
我真的知道如何添加和删除新实例的例子。还有onine那里有很多不同的版本很难找到哪些文档可以遵循我的代码,但我没有从文档中得到它 - 只是试验和错误
提前多多感谢
在对Rays评论的回复中,我在数据库中有一个名为author_publisher的数据透视表,其中包含作者ID和发布者ID,但我不知道如何使用此数据透视表。我必须为它创建一个类吗?我真的不明白
以下是上述代码中对该表的引用 返回$ this-&gt; belongsToMany('作者','author_publisher','publisher_id','author_id');
答案 0 :(得分:0)
当建立M:M关系时,请确保您有一个表格,用于翻译作者和出版商之间的关系。示例表可以由包括author_id和publisher_id的条目组成。根据你提供的内容,你缺少这样一张桌子。
如果您没有这样的表,还有另一种情况。为了使这种M:M关系起作用,为简单起见,作者表必须包含一个名为“publisher_id”的列。同样,发布者表必须包含名为“author_id”的列。然后在作者模型中,返回$ this-&gt; hasMany('Publisher','author_id'),并在发布商模型中,返回$ this-&gt; hasMany('Author','publisher_id')。你应该得到正确的答案。