6
現在、Laravel 4との間にnの関係があります。両方のコンポーネントを使用してテーブルを参照しているピボットテーブルにエラーがあります。単数の名前で私は、ピボットテーブルlands_objsを作成し、それを移入:Laravel 4多対多リレーションシップが機能していない、ピボットテーブルが見つかりません
モデルは以下のとおりです。ここで
<?php
class Obj extends Eloquent
{
protected $guarded = array();
public static $rules = array();
public $timestamps = false;
public function land()
{
return $this->belongsToMany('Land');
}
<?php
class Land extends Eloquent
{
protected $guarded = array();
public static $rules = array();
public $timestamps = false;
public function objs()
{
return $this->belongsToMany('Obj');
}
}
は私が基準以下のピボットテーブルを読み込む方法です。私は雄弁に感謝を行うことができるはずこの構造により
<?php
use Illuminate\Database\Migrations\Migration;
class CreateLandsObjsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('lands_objs', function($table) {
$table->integer('land_id');
$table->integer('obj_id');
});
}
}
を::もちろん土地、OBJSとテーブルをlands_objsが存在し
$land = Land::find(1); //checked loads land fine
$objs = $land->objs; //--> HERE I TAKE THE ERROR
しかし、私はエラーを取る:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'taylor.land_obj' doesn't exist
(SQL: select `objs`.*, `land_obj`.`land_id` as `pivot_land_id`, `land_obj`.`obj_id`
as `pivot_obj_id` from `objs` inner join `land_obj` on `objs`.`id` = `land_obj`.`obj_id`
where `land_obj`.`land_id` = ?) (Bindings: array (0 => 1,))
land_objに迷惑をかけてもLaravelはテーブルlands_objsを作成してはいけませんか?何か不足していますか?
ありがとうございます。
あなたは2つの**のbelongsTo **方法と** hasManyThrough **メソッドを使用しての違いに何を教えてもらえますを参照してください?私は理解していませんが、hasManyTroughを使用して私のために動作しません... – kitensei
シナリオが与えられた著者は多くの投稿を持ち、投稿は多くのコメントを持っています。あなたは2つのメソッドに通常属しています(投稿してコメントに投稿する作者)。しかし、コメントがないので、hasManyThroughを使用すると、すべての投稿のすべてのコメントを選択したいとします。著者に直接関連していますが、別のモデル(投稿)を介して著者に関連しています。 hasManyThroughを使用しないと、著者の投稿をすべて選択してから、すべてのコメントを取得してループしてから、後に行った書式/注文などの処理に何らかの処理を行う必要があります。 – Brent