好的,所以我不知道如何表達我的問題,所以如果它沒有意義,請原諒我
我的看法
@forelse ($transaction as $key=>$value)
<tr>
<td class="text-center">{{$key 1}}</td
<td>{{ $value->transaction_item->item->item_name }}</td>
<td>{{ $value->transaction_item->quantity }}</td>
<td>{{ $value->transaction_item->price }}</td>
<td>{{ $value->total_price }}</td>
<td>{{ $value->created_at }}</td>
<td>{{ $value->updated_at }}</td>
<td>{{ $value->last_updated_by }}</td>
</tr>
@endforelse
我的控制器
$transaction = Transaction::all();
return view('transaction.index', compact('transaction'));
我的模型
// Transaction
protected $table = 'transaction';
protected $guarded = [];
public function transaction_item()
{
return $this->hasOne(TransactionItem::class, 'transaction_id');
}
// TransactionItem
protected $table = 'transaction_item';
protected $guarded = [];
public $timestamps = false;
public function transaction()
{
return $this->belongsTo(Transaction::class, 'transaction_id');
}
public function item()
{
return $this->belongsTo(MasterItem::class, 'master_item_id');
}
TransactionhasTransactionItem有多個item, quantity, 和price。我如何在刀片視圖中顯示它?當我這樣做時{{$value->transaction_item->item->item_name}},它只顯示第item一個,quantity并且和price. 我嘗試item在我的TransactionItemto 中更改關系,belongsToMany但隨后出現此錯誤
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'myDatabase.master_item_id' doesn't exist (SQL: select `master_item`.*, `master_item_id`.`transaction_item_id` as `pivot_transaction_item_id`, `master_item_id`.`master_item_id` as `pivot_master_item_id` from `master_item` inner join `master_item_id` on `master_item`.`id` = `master_item_id`.`master_item_id` where `master_item_id`.`transaction_item_id` = 3)
我不確定是什么導致了這個問題,但是,我沒有可以transaction_item_id肯定地命名的表或列,我的表transaction_item主鍵是id
這是我的表結構
transaction: id(pk), total_price
transaction_item: id(pk), transaction_id(fk), master_item_id(fk), quantity, price
master_item: id(pk), item_name, price
uj5u.com熱心網友回復:
您需要先告訴我們您的表結構、表名、外鍵以及它們之間的關系......
你說 TransactionItem 有多個專案,但在你的關系中你有 TransactionItem 屬于專案
同樣在belongsToMany第二個引數中是表名而不是外鍵
所以如果你有這個表結構
transactions : id , total_price
items : id , item_name , item_price
transaction_items : id ,transaction_id , item_id
在這種情況下transaction_items是一個資料透視表,您可以搜索和閱讀它基本上它只將 2 個表連接在一起
您不需要添加與資料透視表模型的關系,您可以直接定義 2 個表(事務、專案)之間的關系,只需提及它們的資料透視表您的關系應該是
// Transaction
public function items()
{
return $this->belongsToMany( Item::class, 'transaction_items' , 'transaction_id' , 'item_id' );
}
鑒于
@foreach($transactions as $key=>$transaction)
{{$transaction->total_price}}
@foreach($transaction->items as $item )
{{$item->item_name}}
@endforeach
@endforeach
- - - - - - - - - - - - - - - 編輯 - - - - - - - - - - ----
通常資料透視表只包含id其他 2 個其他表的 ,所以它沒有任何有用的資料,它只能作為transactions和之間的橋梁items
transaction -> transaction_item -> items
場景發生在多對多關系中(如果它1 to many或1 to 1關系,您可以將id表 1 的直接存盤在其他表 2 中)
所以當你定義belongsToMany關系時,你直接將 2 個主表連接在一起,并提到資料透視表的名稱基本上就像
transaction belongs to many items via transaction_item
// Transaction
public function items()
{
return $this->belongsToMany( Item::class, 'transaction_items' );
}
but you have stored other data apart from foreign keys (id) in the transaction_item table so this wont work for you ... you need direct relation to transaction_item if you want to show quantity, price
so in your case u should define
// Transaction
public function transaction_item()
{
return $this->hasMany(TransactionItem::class, 'transaction_id');
}
// TransactionItem
public function item()
{
return $this->belongsTo(TransactionItem::class, 'item_id');
}
in view
@foreach($transactions as $key=>$transaction)
{{$transaction->total_price}}
@foreach($transaction->transaction_item $transaction_item)
{{$transaction_item->price}}
{{$transaction_item->quantity}}
{{$transaction_item->item->item_name}}
@endforeach
@endforeach
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/317457.html
下一篇:作業日的安排
