4

我有以下架构和模型设置,以及这个种子数据

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

三通如:

  • 支票附有代币
  • 附加令牌具有附加值,这些值知道支票->令牌附件。

Token问题在于 from to的关系Value,当我加载时Values,他们没有考虑关联Cheque,因此返回属于 a 的所有值Token

我不知道ValueSchema对于这种三向关系是否正确,因此我也怀疑Value模型关系属于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

在返回之前添加一个Log::dump( dump($this) ),显示没有加载模型,只是一个空的 Eloquent 模型:

object(Cheq_Token)[63]
  public 'attributes' => 
    array (size=0)
      empty
  public 'original' => 
    array (size=0)
      empty
  public 'relationships' => 
    array (size=0)
      empty
  public 'exists' => boolean false
  public 'includes' => 
    array (size=1)
      'values' => null

难怪那里会产生错误。

我如何使这种三向关系发生?

4

2 回答 2

0

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

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

于 2013-04-05T20:53:33.477 回答
0

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

这也需要采用不同的插入路径,从而产生以下测试种子

通过以下方式检索所有内容:

$nodes = Node::with(array('tokenlinks', 'tokenlinks.token', 'tokenlinks.values'))->get();
于 2013-04-05T20:58:35.340 回答