Я две таблицы, выглядит, что (миграция):Получить отчет по ID и все foreigns рекурсивны Laravel 5
Schema::create('sets', function(Blueprint $table)
{
$table->increments('id');
$table->string('key');
$table->string('name');
$table->string('set_type');
$table->integer('belongs_to')->unsigned();
$table->timestamps();
$table->foreign('belongs_to')->references('id')->on('sets')->onDelete('cascade');
});
Schema::create('posts', function(Blueprint $table)
{
$table->bigIncrements('id');
$table->bigInteger('user_id')->unsigned();
$table->bigInteger('set_id')->unsigned();
$table->string('post_type', 25);
$table->text('post');
$table->boolean('is_reported')->default(false);
$table->boolean('is_hidden')->default(false);
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('set_id')->references('id')->on('sets');
});
«набор», таблица для хранения данных, в которых местонахождение (страна, город ...) сообщение должно быть просмотрено. Например, давайте хранить некоторые страны:
id | key | name | belongs_to
1 | europe | Europe | null
2 | germany-all | Germany | 1
3 | germany-berlin | Berlin | 2
4 | germany-frankfurt | Frankfurt | 2
5 | poland-all | Poland | 1
6 | poland-warsaw | Warsaw | 5
7 | england-all | England | 1
И мой пост имеет set_id в 6. Глядя логически, когда я хочу получить сообщения из Европы (ID 1), что пост должен быть возвращен тоже, потому что 6 принадлежит 5 и 5 принадлежит 1. И это то, что я хочу сделать. Можно ли использовать слишком много PHP?
Вы также можете сделать '$ set = Set :: where ('key', '=', $ myKey) -> first() -> getDescendantsAndSelf() -> list ('id');' без использования foreach для loop, потому что 'getDescendantsAndSelf()' возвращает объект коллекции. – blackpla9ue
@ blackpla9ue Спасибо, – Siper
@ blackpla9ue, idk why, но он возвращает «Call to undefined method Baum \ Extensions \ Eloquent \ Collection :: list()»:/ – Siper