Laravel 4 принадлежит ToMany Отношения возвращаются пустыми

Я использую Laravel 4, и я изо всех сил пытаюсь установить много-много отношений. Вот пример того, что я пытаюсь сделать. Здесь я пытаюсь установить отношения между многими пользователями и организацией.

Вот мой файл миграции, создание таблицы пользователей, таблицы организаций и сводной таблицы для перехода между ними.

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();
});
}

Я также использовал модель пользователя по умолчанию и добавил отношение ownToMany.

    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');
}
}

Проблема в том, что если я пытаюсь выполнить запрос, используя User :: find (1) -> organization (), конечно, после добавления в пример данных, он всегда возвращается в виде пустого массива, и то же самое происходит в противоположном направлении, используя Organization :: находка (1) -> пользователи (). Странная часть в том, что если я пытаюсь сделать что-то вроде Organization :: find (1) -> users () -> attach (1), он добавляет соответствующую строку в сводную таблицу, поэтому он знает, что связь существует.

Любые идеи о том, почему кажется, что запросы не работают?

1

Решение

Это просто способ, которым вы получаете доступ к своим отношениям. Попробуйте вместо этого сделать следующее:

$organisations = User::find(1)->organisations;

$users = Organisation::find(1)->users;

Если вы используете метод метода отношения, вы также можете добавить дополнительные вещи в запрос. Но будьте осторожны, вам нужно добавить суффикс get() на самом деле выполнить запрос.

// The same as just accessing the property
$organisations = User::find(1)->organisations()->get();

// With extra clauses
$organisations = User::find(1)->organisations()->where('created_at', '>=', '2010-01-01 00:00:00')->get();
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]