laravel 5.1でhasManyThrough関係を使用しようとしていますが、sqlクエリでは使用されている各モデルごとに接続ごとに定義された適切な接頭辞を使用していません。 私は3つのモデルがあり、そのうちの2つは同じ接続を使用し、そのうちの1つは異なるモデルを使用します。接続の唯一の違いは、データベースの接頭辞が同じであることです。laravelでhasManyThrough関係を使用するモデルのDB接続が異なる5.1
:モデルAモデルBは接頭辞を使用する接続B B_が関係を有している
-
モデルBの内部:
public function relationshipWithA() { return $this->hasManyThrough(A::class, C::class, 'Cid', 'Aid'); }
最終的なクエリロジックは正しいですが、結合されたテーブルのB_プレフィックスを使用する代わりに、クエリのすべてのテーブルのA_プレフィックスを使用します。
これはlaravelのバグ/制限ですか?これには解決策がありますか、私は何をしたいのかを達成するために手動で参加する必要がありますか?
public function foos() { return $this->belongsToMany(Foo::class, 'other_db.foos'); }
しかし
hasManyThrough
は、その署名で$table
パラメータを持っていないため、同じソリューションは適用されない:
laravelモデルでは、関係の異なる接続では機能しません。なぜなら、雄弁は舞台裏でSQL結合を使用し、複数のDB接続では不可能なからです – AfikDeri