我有一个问题,我无法解决它。我有一个新闻表包括TitleID,TextID,ImageID。还有三个表标题,文本,图像。我希望在一个模型中得到所有这些。但是当我尝试时,得到像数组中的数组一样的结果。但我想要它:
[ News: [ { ID, Title, Text, Image } ] ]
雄辩的ORM响应如下:
[ News: [ { ID, Title: [ID, Title], Text: [ID, Text], Image: [ID, Image] } ] ]
数据库结构
新闻=>
+-----------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| TitleID | int(11) | NO | | NULL | |
| TextID | int(11) | NO | | NULL | |
| ImageID | int(11) | NO | | NULL | |
| CatID | int(11) | NO | | NULL | |
| OlusturmaZamani | datetime | NO | | NULL | |
| YayinZamani | datetime | NO | | NULL | |
| DuzenlemeZamani | datetime | YES | | NULL | |
| Onay | tinyint(11) | NO | | NULL | |
| Hit | int(11) | YES | | NULL | |
+-----------------+-------------+------+-----+---------+----------------+

标题=>
+------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| TitleText | text | NO | | NULL | |
+------------+---------+------+-----+---------+----------------+

其他表格如标题表。
答案 0 :(得分:1)
您是否有理由将标题和文字提取到自己的表格中?
你的解决方案就像你在这篇文章中看到的那样:
Add a custom attribute to a Laravel / Eloquent model on load?
调整你的例子:
假设您将relationShip更改为“titleTable”,只是为了避免碰撞
class News extends Eloquent {
protected $appends = array('title');
public function getTitleAttribute()
{
return $this->titleTable->TitleText;
}
}
答案 1 :(得分:0)
尝试急切加载。
如果您在新闻,标题,文字和图像表格之间建立了关系,则可以按eager loading加载关系模型。
$news = News::with('title','text','image)->find(1);
答案 2 :(得分:0)
听起来像是ORM"过度标准化"。没有合理的理由将新闻属性(如标题,文本和图像)放在单独的表JOINed
中,并由#34; id"。
"渴望加载"听起来像一个kludge,让它感觉就像列在News
表中时不是。这会导致不必要的低效率。