1
我正在使用Laravel 4,並且我正在努力建立多對多的關係。這是我想要做的一個例子。在這裏,我試圖建立用戶和組織之間的多對多關係。Laravel 4 belongsToMany關係退貨清空
這是我的遷移文件,創建一個用戶表,一個組織表和一個數據透視表以在兩者之間移動。
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('email');
$table->string('password');
$table->timestamps();
});
Schema::create('organizations', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->timestamps();
});
Schema::create('organization_user', function(Blueprint $table)
{
$table->increments('id');
$table->integer('organization_id')->unsigned()->index();
$table->foreign('organization_id')->references('id')->on('organizations')->onDelete('cascade');
$table->integer('user_id')->unsigned()->index();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
});
}
我也使用了默認的用戶模型,並添加了belongsToMany關係。
use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
class User extends Eloquent implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('password', 'remember_token');
public function organizations()
{
return $this->belongsToMany('Organization');
}
}
而且我創建了一個組織模型,關係走向相反的方向。
class Organization extends \Eloquent {
protected $fillable = ['name'];
public function users()
{
return $this->belongsToMany('User');
}
}
的問題是,如果我嘗試使用做一個查詢用戶::發現(1) - >組織(),當然在樣本數據相加後,它總是返回一個空數組,同使用Organization :: find(1) - > users()進行相反的操作。奇怪的部分是,如果我嘗試執行類似於Organization :: find(1) - > users() - > attach(1)的操作,它將在數據透視表中添加適當的行,以便知道關係在那裏。
關於爲什麼它似乎查詢不起作用的任何想法?
太棒了,謝謝!我知道這會很簡單。 – 2014-09-29 01:49:22