簡體   English   中英

Laravel:hasOne雄辯的關系

[英]Laravel : hasOne Eloquent Relationships

我有一個交易表,它hasOne 網站hasOne accounthead。 但是該站點並不一定要求綁定任何交易,並且客戶頭也可以獨立存在而不受任何交易的約束。

基本上, 站點AccountHead不一定belongsTo 交易

我該如何使用雄辯的關系來表示這種情況。

我是否在網站AccountHead模型中缺少需要做的任何事情?

這是我已經做的:

我的交易模型:

    class Transaction extends Model
{
  public function site()
    {
        return $this->hasOne('App\Site');
    }
    public function accounthead()
    {
        return $this->hasOne('App\AccountHead');
    }
}

我的網站模型

    class Site extends Model
{
    protected $fillable = [
        'name',
        'slug',
        'location',
        'description'
    ];
}

我的AccountHead模型

class AccountHead extends Model
{
    protected $fillable = [
        'slug',
        'accountname'
        ];
}

我需要能夠在我的視圖中顯示每個交易的網站和客戶頭。

在我看來:

 @forelse($transactions as $transaction)
     <td>{{str_limit($transaction->accounthead,47)}}</td>
     <td>{{str_limit($transaction->site,47)}}</td>
   @endforelse

首先,兩個表都需要一個transation_id字段來添加事務記錄ID。 這可以是nullable()並且應該是unique() ,以確保沒有其他記錄具有相同的transation_id

...
$table->integer('transation_id')->nullable()->unique();
...

在您看來,您需要從關系中指定所需的數據。 例如

<td>{{str_limit($transaction->accounthead->accountname,47)}}</td>
<td>{{str_limit($transaction->site->name,47)}}</td>

accountname / name是要返回到視圖的字段。

解決了。

它實際上不是一對一的關系,而是站點交易AccountHead交易之間的hasMany關系。

我的新站點模型如下所示:

class Site extends Model
{
    protected $fillable = [
        'name',
        'slug',
        'location',
        'description'
    ];

 public function transactions()
    {
        return $this->hasMany('App\Transaction','site_id');
    }
}

我的新AccountHead模型如下所示:

class AccountHead extends Model
{
    protected $fillable = [
        'slug',
        'accountname'
        ];

public function transactions()
    {
        return $this->hasMany('App\Transaction','accounthead_id');
    }
}

我的新交易模型如下所示:

    class Transaction extends Model
{
  public function site()
    {
      return $this->belongsTo('App\Site','id');
    }
    public function accounthead()
    {
      return $this->belongsTo('App\AccountHead','id');
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM