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

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条)

报告相同问题?

悬赏问题

  • ¥15 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题