dongyang9813
2017-04-27 13:25
浏览 254
已采纳

Laravel HasMany跨多个连接

I want to retrieve Offers related to Offer on a second table offer_related because I can't change the schema of the Offer table.

I have two databases on different connections, offers on one, and offer_related on another.

For the sake of argument, I'm going to name databases as follows for clarity in my examples with regards to which can change and which can't.

  • database containing offers henceforth known as immutable
  • database containing offer_related henceforth known as mutable

Example schema is as follows

connection1.mutable.offer_related

offer_id | related_offer_id
---------------------------
1        | 2
1        | 3

connection2.immutable.offers

id | name
---------------------------
1  | foo
2  | bar
3  | baz

I'm assuming it'd be a belongsToMany relationship, but I can't seem to get it right.

return $this->belongsToMany(Offer::class, 'immutable.offer', 'id');

// Syntax error or access violation: 1066 Not unique table/alias: 'offer'

I've also tried to manually build out a belongsToMany relationship with a custom query with no success.

I'd like to be able to call

Offer::find(1)->related; // Offer(2), Offer(3)
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dongqixian8474 2017-04-27 13:54
    已采纳

    Change the relationship to:

        return $this->belongsToMany(Offer::class, 'mutable.offer_related', 
                                    'offer_id', 'related_offer_id');
    

    Your original query was trying to establish a relationship without using the relation table (offer_related). That is the problem.

    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题