三种方式(模式)关系

时间:2013-04-03 15:33:41

标签: php foreign-keys relationship laravel eloquent

我有以下Schema and Model设置,seed data

我的目标是实现三方关系,这可能是一个错误的术语,但最后,这就是我所说的。

三通,如:

  • 支票已附加标记
  • 附加标记附加了值,它们知道Cheque-> Token附件。

问题在于从TokenValue的关系,当我加载Values时,他们不会记住关联的Cheque因此,返回所有属于Token的值。

我不知道Value架构对于这种三向关系是否正确,因此,我也怀疑属于Value和{{1}的Cheque模型关系是正确的。

这就是我目前正在申请模型的方式(摘自设置):

Token

我尝试将Route::get('test', function() { $cheque = Cheq_Node::with(array('tokens' => function($query) { $query->where_sortable(1); }, 'tokens.values'))->first(); dd( $cheques ); }); 值引用更改为:

Token

但这让我产生了:

public function values()
{
    return $this->has_many('Cheq_Value', 'token_id')->where_node_id($this->pivot->id);
}

在返回之前添加Trying to get property of non-object ,显示没有加载模型,只显示一个空的Eloquent模型:

Log::dump( dump($this) )

难怪在那里产生错误。

如何实现这种三方关系?

2 个答案:

答案 0 :(得分:0)

我认为您需要使用适当的外键来检查数据库架构,以便检索正确的数据。假设你得到你想要的结果,并不总是最好的方法。

在数据库中使用连接将起到作用......

答案 1 :(得分:0)

我最终选择了不同的Schema和不同的Models

还需要采用不同的插入路径,从而产生以下test seed

使用以下方式检索所有内容:

$nodes = Node::with(array('tokenlinks', 'tokenlinks.token', 'tokenlinks.values'))->get();
相关问题