Есть ли способ получить все поля в таблице вращаться вместо того, чтобы указывать одно за другим?
Например (начиная с руководства здесь):
магазины:
продукты:
product_shop:
Я не хочу указывать каждое отдельное поле:
public function products() {
return $this->belongsToMany('App\Product')
->withPivot('field_1', 'field_2', 'field_3', 'ecc..' );
}
но я бы вернул все доступные поля в таблице; что-то вроде ->withPivot('*');
Есть способ?
Спасибо.






Это невозможно сделать, потому что это было бы довольно сложно.
Чтобы предотвратить коллизии, Laravel должен добавить псевдонимы для сводных столбцов:
`product_shop`.`field_1` as `pivot_field_1`, ...
Итак, Laravel понадобится список всех столбцов в сводной таблице. Единственный способ получить этот список - это отдельный запрос к information_schema.columns.
Вы можете добиться этого, сначала получив все столбцы (поля) из таблицы product_shop и передав их в виде массива в withPivot. Смотрите код ниже:
public function products() {
$table_name = 'product_shop';
// or you could get table name dynamically if you have a ProductShop model
// $table_name = (new ProductShop)->getTable()
$table_fields = Schema::getColumnListing($table_name);
return $this->belongsToMany('App\Product')
->withPivot($table_fields);
}
Не забудьте импортировать схему:
use Illuminate\Support\Facades\Schema;
Надеюсь, у вас это сработает. Вы можете удалить некоторые поля из массива по значению. Эта ссылка объясняет, как удалить некоторые поля.
Вам помогает ответ?