我有 3 个表:
customer
:fields: id, name
item
:fields: id, name
customer_items
:fields: customer_id, item_id, qty
Customer
和Item
具有各自的模型。
问题:在没有透视模型的情况下,如何将这两个(客户和项目)相关联?
我想直接使用$customer->items
来获取客户商品,而不是执行$customer->customerItem->items
,因为我不想跟踪customerItems和客户按商品。 < / p>
此外,我无法直接将customer_items
表用于Item
模型,因为我可能需要检索其控制器中的所有项目。
答案 0 :(得分:2)
如@kerbholz所指出的(但他们没有提供答案,而是这样),在您的客户模型中,您需要以下功能:
public interface IMessage : IDisposable
{
string Id { get; }
string CorrelationId { get; set; }
string MessageContentType { get; }
TimeSpan? TimeToLive { get; set; }
AcknowledgementStatus AcknowledgementStatus { get; }
IDictionary<string, object> CustomHeaders { get; }
byte[] RawContent { get; }
void Abandon();
Task AbandonAsync();
void Acknowledge();
Task AcknowledgeAsync();
IMessage Clone();
T GetContent<T>();
T GetContent<T>(IBinarySerializer serializer);
IDictionary<string, object> GetMessageHeaders();
}
假设您的Item模型类位于 public function items()
{
return $this->belongsToMany('App\Item');
}
之内。您也可以在Item模型中进行相反的操作。
现在,您应该可以进行App
并获取项目集合了。
如果要包括$customer->items
字段,则需要:
qty
请注意,您仍然需要数据透视表,您无法对其进行转义,但是现在可以以一种更加优雅的方式对其进行导航。
答案 1 :(得分:0)
创建customer_items
表,并包含custmer_item_id
和user_id
。在User
模型中,包括此功能
public function basket() // example
{
return $this->belongsToMany(User::class, 'customer_items', 'user_id', 'custmer_item_id');
}