Mối quan hệ 1-1
Chi tiết:
Trong ví dụ, chúng tôi có 2 mô hình ( Chủ sở hữu và ô tô ) và 2 bảng ( chủ sở hữu và ô tô ).
Quy tắc kinh doanh:
- Người lái xe – Chủ sở hữu chỉ có thể lái được 1 ô tô – Xe hơi .
- Ô tô – Car only can be drive by people drive – Owner .
Sơ đồ quan hệ:
Chi tiết mối quan hệ:
Trong ô tô bảng phải lưu trữ Chủ sở hữu ID (owner_id) .
Các mô hình hùng hồn:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <span class="token keyword">class</span> <span class="token class-name">Owner</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">car</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">hasOne</span> <span class="token punctuation">(</span> Car <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">Car</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">owner</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">belongsTo</span> <span class="token punctuation">(</span> Owner <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Di chuyển cơ sở dữ liệu:
1 2 3 4 5 6 7 8 9 10 11 12 | Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'owners'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'cars'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">integer</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'owner_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">unsigned</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">index</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">nullable</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">foreign</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'owner_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">references</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">on</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'owners'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Hồ sơ lưu trữ:
1 2 3 4 5 6 | <span class="token comment">// Create relation between Owner and Car</span> <span class="token variable">$owner</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">car</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token variable">$car</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Create relation between Car and Owner</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">owner</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">associate</span> <span class="token punctuation">(</span> <span class="token variable">$owner</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Truy xuất hồ sơ:
1 2 3 4 5 6 | <span class="token comment">// Get Owner Car</span> <span class="token variable">$owner</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">car</span> <span class="token punctuation">;</span> <span class="token comment">// Get Car Owner</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">owner</span> <span class="token punctuation">;</span> |
Mối quan hệ một đến nhiều
Chi tiết:
Trong ví dụ, chúng ta có 2 mô hình ( Thief & Car ) và 2 table ( trộm và ô tô ).
Quy tắc kinh doanh:
- Tên trộm – Kẻ trộm có thể giám sát nhiều ô tô – Ô tô .
- Ô tô ô tô – Xe hơi có thể được đánh dấu bởi 1 tên giám định – Kẻ trộm .
Sơ đồ quan hệ:
Chi tiết mối quan hệ:
Trong ô tô bảng phải lưu trữ Thief ID (tên trộm) .
Các mô hình hùng hồn:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <span class="token keyword">class</span> <span class="token class-name">Thief</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">hasMany</span> <span class="token punctuation">(</span> Car <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">Car</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">thief</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">belongsTo</span> <span class="token punctuation">(</span> Thief <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Di chuyển cơ sở dữ liệu:
1 2 3 4 5 6 7 8 9 10 11 12 | Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'thieves'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'cars'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">integer</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'thief_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">unsigned</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">index</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">nullable</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">foreign</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'thief_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">references</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">on</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'thieves'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Hồ sơ lưu trữ:
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token comment">// Create relation between Thief and Car.</span> <span class="token variable">$thief</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">saveMany</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$car1</span> <span class="token punctuation">,</span> <span class="token variable">$car2</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Or use the save() function for single model.</span> <span class="token variable">$thief</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token variable">$car</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Create relation between Car and Thief.</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">thief</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">associate</span> <span class="token punctuation">(</span> <span class="token variable">$thief</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Truy xuất hồ sơ:
1 2 3 4 5 6 | <span class="token comment">// Get Thief Car</span> <span class="token variable">$thief</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">cars</span> <span class="token punctuation">;</span> <span class="token comment">// Get Car Thief</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">thief</span> <span class="token punctuation">;</span> |
Mối quan hệ đa hình từ một đến nhiều
Chi tiết:
Trong ví dụ, chúng tôi có 3 mô hình ( Man, Woman & Car ) và 3 table ( nam, nữ và ô tô ).
Quy tắc kinh doanh:
- 1 người con trai – Man (người mua) có thể mua nhiều chiếc ô tô – Ô tô .
- 1 người con gái – Người phụ nữ (người mua) có thể mua nhiều chiếc ô tô – Ô tô .
- 1 ô tô – Car could be buy by 1 people buy any that (Người con trai – Người đàn ông hoặc Người con gái – Người phụ nữ ).
Sơ đồ quan hệ:
Chi tiết mối quan hệ:
Trong ô tô bảng phải lưu trữ ID lưu trữ của người mua ( buy_id ) và người mua đó là ai – người con trai hay người con gái ( buy_type )
Các mô hình hùng hồn:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <span class="token keyword">class</span> <span class="token class-name">Man</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">morphMany</span> <span class="token punctuation">(</span> Car <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">'buyer'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">Woman</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">morphMany</span> <span class="token punctuation">(</span> Car <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">'buyer'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">Car</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">buyer</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">morphTo</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Di chuyển cơ sở dữ liệu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'man'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'woman'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'cars'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">integer</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'buyer_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">unsigned</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">index</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">nullable</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'buyer_type'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">nullable</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// or use $table->morphs(‘buyer’); instead of "buyer_id" and "buyer_type"</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Hồ sơ lưu trữ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <span class="token comment">// Create relation between buyer (Man/Woman) and Car.</span> <span class="token variable">$man</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">saveMany</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$car1</span> <span class="token punctuation">,</span> <span class="token variable">$car2</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$woman</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">saveMany</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$car1</span> <span class="token punctuation">,</span> <span class="token variable">$car2</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Or use the save() function for single model.</span> <span class="token variable">$man</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token variable">$car</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$woman</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token variable">$car</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Create relation between Car and buyer (Men/Women).</span> <span class="token variable">$car1</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">buyer</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">associate</span> <span class="token punctuation">(</span> <span class="token variable">$man</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$car2</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">buyer</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">associate</span> <span class="token punctuation">(</span> <span class="token variable">$woman</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Truy xuất hồ sơ:
1 2 3 4 5 6 7 | <span class="token comment">// Get buyer (Man/Woman) Cars</span> <span class="token variable">$man</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">cars</span> <span class="token variable">$woman</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">cars</span> <span class="token comment">// Get Car buyer (Man and Woman)</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">buyer</span> |
Nhiều mối quan hệ
Chi tiết:
Trong ví dụ, chúng ta có 2 model ( Driver & Car ), 2 table ( driver & xe hơi ) và 1 table trung gian – pivot ( car_driver ).
Quy tắc kinh doanh:
- 1 người lái xe – Người lái xe có thể lái được nhiều loại ô tô khác nhau – Cars .
- 1 ô tô ô tô – Xe có thể được điều khiển bởi nhiều người lái xe – Người lái xe.
Sơ đồ quan hệ:
Chi tiết mối quan hệ:
Gian bảng trung gian – Pivot (car_driver) phải lưu ID người lái xe ( driver_id ) và ID chiếc ô tô mà người điều khiển xe ( car_id ).
Các mô hình hùng hồn:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <span class="token keyword">class</span> <span class="token class-name">Driver</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">belongsToMany</span> <span class="token punctuation">(</span> Car <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">Car</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">drivers</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">belongsToMany</span> <span class="token punctuation">(</span> Driver <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Di chuyển cơ sở dữ liệu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'drivers'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'cars'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'car_driver'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">integer</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'car_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">unsigned</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">index</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">foreign</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'car_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">references</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">on</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'cars'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">onDelete</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'cascade'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">integer</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'driver_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">unsigned</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">index</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">foreign</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'driver_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">references</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">on</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'drivers'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">onDelete</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'cascade'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Hồ sơ lưu trữ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <span class="token comment">// Create relation between Driver and Car.</span> <span class="token variable">$driver</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">attach</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$car1</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token variable">$car2</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Or use the sync() function to prevent duplicated relations.</span> <span class="token variable">$driver</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">sync</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$car1</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token variable">$car2</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Create relation between Car and Driver.</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">drivers</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">attach</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$driver1</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token variable">$driver2</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Or use the sync() function to prevent duplicated relations.</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">drivers</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">sync</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$driver1</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token variable">$driver2</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Truy xuất hồ sơ:
1 2 3 4 5 6 | <span class="token comment">// Get Driver Car</span> <span class="token variable">$driver</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">cars</span> <span class="token comment">// Get Car Drivers</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">drivers</span> |
Mối quan hệ đa hình từ nhiều đến nhiều
Chi tiết:
Trong ví dụ, chúng ta có 3 mô hình ( Valet, Owner & Car ), 4 table ( valets, owner, car & driver ).
Quy tắc kinh doanh:
- 1 người hầu hết trong nhà bạn – Valet có thể lái được nhiều loại ô tô trong nhà bạn – Ô tô .
- Bố bạn – Chủ sở hữu có thể lái được nhiều loại ô tô trong nhà – Ô tô .
- 1 ô tô ô tô – Xe có thể được điều khiển bởi nhiều người lái xe – Valet / Owner .
Sơ đồ quan hệ:
Chi tiết mối quan hệ:
Gian bảng trung gian – Pivot (driver) phải lưu ID người lái xe ( driver_id ), người lái xe là ai – Valet / Owner (driver_type) và ID ô tô ( car_id ).
Các mô hình hùng hồn:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <span class="token keyword">class</span> <span class="token class-name">Valet</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">morphToMany</span> <span class="token punctuation">(</span> Car <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">'driver'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">Owner</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">morphToMany</span> <span class="token punctuation">(</span> Car <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">'driver'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">Car</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">valets</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">morphedByMany</span> <span class="token punctuation">(</span> Valet <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">'driver'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">owners</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">morphedByMany</span> <span class="token punctuation">(</span> Owner <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">'driver'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Di chuyển cơ sở dữ liệu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'valets'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'owners'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'name'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'drivers'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">increments</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">integer</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'driver_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">unsigned</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">index</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'driver_type'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// or use $table->morphs(‘driver’); instead of "driver_id" and "driver_type"</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">integer</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'car_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">unsigned</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">index</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">foreign</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'car_id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">references</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">on</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'cars'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">onDelete</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'cascade'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Hồ sơ lưu trữ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <span class="token comment">// Create relation between driver (Valet/Owner) and Car.</span> <span class="token variable">$valet</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">saveMany</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$car1</span> <span class="token punctuation">,</span> <span class="token variable">$car2</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$owner</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">saveMany</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$car1</span> <span class="token punctuation">,</span> <span class="token variable">$car2</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Or use the save() function for single model.</span> <span class="token variable">$valet</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token variable">$car1</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$owner</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">cars</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">save</span> <span class="token punctuation">(</span> <span class="token variable">$car1</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Create relation between Car and driver (Valet/Owner).</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">valets</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">attach</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$valet1</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token variable">$valet2</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">owners</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">attach</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$owner1</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token variable">$owner2</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Or use the sync() function to prevent duplicated relations.</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">valets</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">sync</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$valet1</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token variable">$valet2</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">owners</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">sync</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token variable">$owner1</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token variable">$owner2</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">id</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Truy xuất hồ sơ:
1 2 3 4 5 6 7 8 | <span class="token comment">// Get driver (Valet/Owner) Cars</span> <span class="token variable">$valet</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">cars</span> <span class="token variable">$owner</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">cars</span> <span class="token comment">// Get Car drivers (Valet and Owner)</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">owners</span> <span class="token variable">$car</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">valets</span> |
Summary
Reference Document
https://hackernoon.com/eloquent-relationships-cheat-sheet-5155498c209