1

我有一个carriages具有以下架构的表:

foreign: subsidiary_id
string: type
string: postal_code

还有一个subsidiaries表,具有以下架构:

string: name
string: internal_reference
decimal: expedition_rate

现在,我将在SubsidiariesController中调整我的store函数,以便它会自动为该新子公司创建 2 个车厢。

我知道,在创建子公司后,我可以很容易地进行个人创建步骤,但我想知道,如何使用关系方式?

我所知道的是,在我的Subsidiary.php 模型中,我可以创建 2 个函数,如下所示:

public function carriageExport()
{
    return $this->hasOne('Carriage');
}

public function carriageImport()
{
    return $this->hasOne('Carriage');
}

carriageExport将在哪里carriages.type = 'export',并且carriageImport将是carriages.type = 'import'

所以,

  1. 我不知道,如果定义了关系函数,是否已经正确完成。你怎么看?我错过了一些东西,对吧?它是什么?
  2. 你宁愿坚持使用非关系版本吗?
4

1 回答 1

3

在这种情况下,范围是要走的路:

class Subsidiary extends Eloquent {

    public function carriage()
    {
        return $this->hasOne('Carriage');
    }

}

class Carriage extends Eloquent {

    public function scopeImport($query)
    {
        return $query->whereType('import');
    }

    public function scopeExport($query)
    {
        return $query->whereType('export');
    }

}

那么你也能:

echo Subsidiary::find(1)->carriage()->import()->first()->postal_code;
于 2013-10-12T14:54:25.123 回答