Php 从';枢轴';桌子
是否有办法获取透视表中的所有字段,而不是逐个指定 例如(从指南开始): 商店:Php 从';枢轴';桌子,php,eloquent,pivot,relationship,laravel-5.6,Php,Eloquent,Pivot,Relationship,Laravel 5.6,是否有办法获取透视表中的所有字段,而不是逐个指定 例如(从指南开始): 商店: 身份证 名字 产品: 身份证 名字 产品商店: 产品标识 店号 字段_1 字段2 第3场 ecc 我不想指定每个字段: public function products() { return $this->belongsToMany('App\Product') ->withPivot('field_1', 'field_2', 'field_3', 'ecc..' );
- 身份证
- 名字
- 身份证
- 名字
- 产品标识
- 店号
- 字段_1
- 字段2
- 第3场
- ecc
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需要一个透视表中所有列的列表。获取此列表的唯一方法是单独查询信息\u架构。columns
您可以通过首先从product\u 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;
我希望它对你有用。您可能需要按值从数组中删除一些字段 答案对你有帮助吗?