我在用戶和條目模型之間有一對多的關系,
但我沒有像外鍵那樣使用 user_id,我使用了供應商ID
,所以當我嘗試使用 where 過濾資料時出現以下 sql 錯誤:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'entries.user_id' in 'where clause' (SQL: select * from 用戶where角色= supplier and用戶.公司ID= 1 and exists (select * from條目where用戶.ID = **條目用戶ID.條目日期** and between 2022-01-01 and 2022-01-31))
我認為查詢必須像entries............ supplier_id.......不是user_id,因為我設定了與特定外鍵的關系:
Entry.php
public function supplier()
{
return $this->belongsTo(User::class, 'supplier_id');
}
有什么方法可以在 whereHas 子句中設定外鍵?
過濾器代碼:
public function scopeEntriesBetween($query, $start, $end)
{
$query->whereHas('entries', function ($query) use ($start, $end) {
$query->whereBetween(
'entry_date',
[$start->format('Y-m-d'), $end->format('Y-m-d')]
);
});
}
uj5u.com熱心網友回復:
就像你對條目到用戶的關系所做的那樣,對用戶到條目的關系做同樣的事情
class User//..
{
//..
public function entries()
{
return $this->hasMany(Entry::class, 'supplier_id');
}
//..
}
現在您可以使用entrieswhereHas 中的關系或直接使用正確的外鍵
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/416990.html
標籤:
上一篇:SVG影像無法在手機中正確顯示
