私はlaravelを初めて使用しています。これはあまり考えられないことを事前に警告しています。Eloquentを使用したCSVファイルからモデルをシードする
私はいくつかのモデルにCSVファイルをシードしようとしています。このファイルは店舗の名前と場所のリストを保持しています。のは、それは次のようになりましょう:終わり
StoreName, City, State
store1, Philadelphia, PA
store2, Philadelphia, PA
store3, Altoona, PA
store4, Portland, OR
store5, Portland, OR
、結果は市のモデルと状態モデルになります。
id, name, total
1, PA, 3
2, OR, 2
:その状態で
id, name, state, total
1, Philadelphia, PA, 2
2, Altoona, PA, 1
3, Portland, OR, 2
と国家モデル名の列を持つことになりますし、総店舗:市は、市、州の名前の列、および総店舗その都市のを持っているでしょう
私はその後、状態モデル内のhasManyの関係を有する:
class State extends Model
{
public function cities()
{
return $this->hasMany(City::class, 'state', 'name');
}
}
この関係は、LOCとして市から外部キーとして国家モデルからの「状態」欄、および「名前」欄を定義しますアル鍵。
この関係が改善できるかどうかは疑問です。 'state_id'の属性を持つCity Modelを作成し、State Modelの 'id'属性に一致させる方法がありますか?私がApp\State::find(#)->cities
と呼んだとき、これはパフォーマンスの向上のためになりますか?
または、「状態」を状態モデルの外部キーとして定義するために何か必要なことはありますか?
また、CSVの各レコードをforeachループで処理するのではなく、Eloquentを使用して複数の別々のモデルにCSVファイルを抽出する簡単な方法がありますか?
おかげで、これはlaravelに関連していないで、事実