У нас есть модель Laravel, и иногда мы хотим получить данные из ее таблицы по умолчанию, а иногда из другой таблицы.Все это работает с точки зрения данных, но когда коллекция возвращается из альтернативной таблицы, атрибут «table» все еще ссылается на исходную таблицу (даже если данные получены из другой, как и ожидалось).
Если мы используем dd () getTable (), это правильно:
$model = COUNTRY;
$table = "countires";
$org_id = 1;
$org_collection = $model->setTable('merge_' . $table)->get()
->where('organization_id', $org_id)->keyBy('id');
dd($model->getTable()); // *** THIS SHOWS THE 2nd TABLE AS EXPECTED
dd () выход:
"merge_countries"
Но с точно таким же кодом, еслимы dd () получаем, что атрибут таблицы в коллекции по-прежнему 1-й («orgs»), а не «merge_orgs», как ожидалось, даже если данные правильно поступают из таблицы «merge_orgs»:
$model = COUNTRY;
$table = "countires";
$org_id = 1;
$org_collection = $model->setTable('merge_' . $table)->get()
->where('organization_id', $org_id)->keyBy('id');
dd($org_collection); // *** THIS SHOWS THE 1st TABLE EVEN THOUGH THE getTable() ABOVE DOES NOT
dd () вывод:
Collection {#297
#items: array:1 [
3 => Country {#295
#connection: "common"
#table: "countries" <---- WHY IS THIS NOT 'merge_countries'???
#hidden: array:2 [
0 => "created_at"
1 => "updated_at"
]
#appends: array:1 [
0 => "level"
]
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:7 [
"id" => 3
"organization_id" => 1
"region_id" => 2
"name" => "Southpark"
"active" => 1
"created_at" => "2018-06-21 14:05:36"
"updated_at" => "2018-06-21 13:25:27"
]
#original: array:7 [
"id" => 3
"organization_id" => 1
"region_id" => 2
"name" => "Southpark"
"active" => 1
"created_at" => "2018-06-21 14:05:36"
"updated_at" => "2018-06-21 13:25:27"
]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#visible: []
#fillable: []
#guarded: array:1 [
0 => "*"
]
}
]
}
Есть идеи, как решить эту проблему?Мы не уверены, что еще можно попробовать на этом этапе.Laravel, если 5,6, если это имеет значение.