我的模型產品的回報是這樣從relationed表下拉創建列表與價值
- ID = 1
- 名=產品名稱
- CATEGORY_ID = 101
- 類別=陣列
- id = 101
- name = electronics
,我需要使用lists()
創造這樣的事情:
列表( 「category.name」, 「ID」)
但看起來,這是不可能。如何爲這樣的下拉列表創建:
1 = electronics
2 = furniture
3 = cars
...
非常感謝
我的模型產品的回報是這樣從relationed表下拉創建列表與價值
,我需要使用lists()
創造這樣的事情:
列表( 「category.name」, 「ID」)
但看起來,這是不可能。如何爲這樣的下拉列表創建:
1 = electronics
2 = furniture
3 = cars
...
非常感謝
你確定你沒有樹立正確的關係?因爲這正是lists()
通常所做的事情,並且創建這樣的列表根本不可能。
很難理解你如何設計你的雄辯邏輯而沒有你的代碼,但這裏是我如何處理你的情況,假設你已經設置了category_product
數據透視表。
鑑於兩款車型,Product
和Category
,我會定義這些2間的關係的原因,據我可以得到的,一個產品可以有幾個類別和類別可與多種產品相關聯:
class Product extends Model
{
////////
public function categories()
{
return $this->belongsToMany('App\Category');
}
////////
}
和
class Category extends Model
{
////////
public function products()
{
return $this->belongsToMany('App\Product');
}
////////
}
在這一點上,你是好去,所有你必須爲了得到你的名單做的是
Product::findOrFail($id)->categories->lists('name','id')
這將返回數組保存與特定產品關聯
array:[
1 => first-category
2 => second-category
3 => third-category
....
]
注意所有類別與此設立它會工作的其他方式爲好,如果你想獲得的所有列表匹配一個給定類別
Category::findOrFail($id)->products->lists('name','id')
,在我以爲你是建立一個數據透視表,但是,如果你沒有答案的最頂級產品,這裏有一個快速提示:您的產品中 遷移
public function up()
{
Schema::create('products', function (Blueprint $table) {
//
});
Schema::create('category_product', function (Blueprint $table){
$table->integer('category_id')->unsigned()->index();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
$table->integer('product_id')->unsigned()->index();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->timestamps();
});
}
Then migrate
現在一切正常。最後但並非最不重要的一點是,如果您要使用此遷移,您需要修復模型中的關係,這取決於您的應用程序邏輯:讓我們說流程是創建一個新產品 - >選擇內部的類別創作形式,則需要在大類方法
return $this->belongsToMany('App\Category')->withTimeStamps();
是「類別」屬於「產品」的模型添加
timestamps()
?如果是這樣,你是想列出所有類別,還是僅僅列出一部分類別? – DonnaJo產品所屬類別和類別hasMany產品。我試圖列出產品ID與類別名稱屬於每個產品。 – scooti