Php 雄辩的ORM,当ID位于初始表中而不是参考表中时

Php 雄辩的ORM,当ID位于初始表中而不是参考表中时,php,database,laravel,laravel-4,Php,Database,Laravel,Laravel 4,当我的模式如下所示时,我试图找出如何使用雄辩的ORM从addresses表中请求记录: TABLE users { id billing_addr_id shipping_addr_id } TABLE addresses { id address1 address2 city state zip country } 如您所见,我想为账单地址id和发货地址id提取一条记录,但是地址表没有对用户的引用,只是因为并非所有地址都将连接到用户 我希望这是有意义的 您需要首先定义您的雄辩模型 你可以做

当我的模式如下所示时,我试图找出如何使用雄辩的ORM从
addresses
表中请求记录:

TABLE users {
id
billing_addr_id
shipping_addr_id
}

TABLE addresses {
id
address1
address2
city
state
zip
country
}
如您所见,我想为
账单地址id
发货地址id
提取一条记录,但是
地址
表没有对用户的引用,只是因为并非所有地址都将连接到
用户


我希望这是有意义的

您需要首先定义您的雄辩模型

你可以做一些类似(未测试)


我忘了地址表上没有用户id…然后我会这样做

 class User extends Eloquent {
   protected $table = "users";

   public function bill_to(){
     return Address::where('id','=',$this->billing_addr_id)->first();
   }

   public function ship_to(){
    return Address::where('id','=',$this->shipping_addr_id)->first();
   }

 }
然后你调用你的逻辑

 $user = User::find(2);
 $address = $user->bill_to();

为什么您的地址没有链接到用户?因为不仅仅是用户需要地址。找不到列:1054个未知列“地址”。where子句中的billing_addr_id”(SQL:select*from
addresses
where
addresses
billing_addr_id
in(?,)(绑定:数组(0=>'1',1=>'33'))这也可以奏效。我更喜欢@Rob W方法。谢谢你抽出时间!:)嗯,这是一个电话,询问地址本身。。。我永远不会直接询问地址,而是询问用户并希望连接地址。故意省略它,以便您可以根据需要使用它。您可能对使用
->first()
感兴趣,这样您就可以简单地执行
->first()->address1
,或者更容易地
->选择(“address1”)
-您的偏好。这很公平!非常感谢,罗伯。
 $user = User::find(2);
 $address = $user->bill_to();