目標:
我的目標是能夠調用$entity->legalName()->first()
並獲得實體的法定名稱。Laravel 3:沒法把我的頭周圍的`HAS_ONE包裹()`關係
型號:
##### Entity #####
namespace Entity\Eloquent;
class Entity extends \Eloquent{
public static $key = 'uuid';
public function names(){
return $this->has_many(
'Entity\Eloquent\EntityName',
'entity_uuid'
);
}
public function legalName(){
return $this->has_one(
'Entity\Eloquent\EntityName',
'entity_name_id_legal_name'
);
}
}
##### EntityName #####
namespace Entity\Eloquent;
class EntityName extends \Eloquent{
/**
* NOTE: I've tried a few things, but
* currently, this model is empty.
*/
}
嘗試:
$entity = Entity::find($uuid);
$legalName = $entity->legalName()->get();
echo '<pre>LegalName:<br />',var_dump($legalName),'</pre>';
###########################################
## ERROR:
## Column not found: 1054 Unknown column 'entity_name_id_legal_name' in 'where clause'
## SQL: SELECT * FROM `m3sandbox_company_name` WHERE `company_name_id_legal_name` = ?
## Bindings: array (0 => 'a7ae2ea4-b342-11e2-9575-ba8c8f281c14')
###########################################
還試圖:
我還試圖改變Entity->legalName()
關係方法:
public function legalName(){
return $this->has_one
(
'Entity\Eloquent\EntityName',
'id'
);
}
雖然結果不同,他們仍然不正確的:
$entity = Entity::find($uuid);
$legalName = $entity->legalName()->get();
echo '<pre>LegalName:<br />',var_dump($legalName),'</pre>';
###########################################
## prints: null
###########################################
數據說明:
一個實體可以有N個名字,所以entity.uuid
(一)和entity_name.entity_uuid
(很多)之間有一對多的關係。
但實體只能有一個合法的名稱,因此entity.entity_name_id_legal_name
和entity_name.id
之間存在一對一的關係。
數據:
INSERT INTO `entity`
(`uuid`, `entity_name_id_legal_name`, `datetime_created`)
VALUES
('a7ae2ea4-b342-11e2-9575-ba8c8f281c14', 39657, '2011-06-29 02:12:06');
INSERT INTO `entity_name`
(`id`, `entity_uuid`, `value`, `datetime_created`)
VALUES
(516, 'a7ae2ea4-b342-11e2-9575-ba8c8f281c14', 'Bingo', '2011-06-29 02:12:06'),
(3965, 'a7ae2ea4-b342-11e2-9575-ba8c8f281c14', 'Bango', '2013-05-17 00:00:00'),
(39657, 'a7ae2ea4-b342-11e2-9575-ba8c8f281c14', 'Bongo', '2013-05-17 00:00:00');
摘要:
我需要得到實體有一-legalName關係運作。
我錯過了什麼?
我哪裏錯了?
您是否爲「Entity \ Eloquent \ EntityName」創建了擴展Eloquent的模型? –