簡體   English   中英

無法在類別下拉列表中顯示子類別

[英]Troubling to show sub-categories in the Categories Dropdown list

在我的代碼中,我想在產品表類別下顯示類別類別。

這是我的類別表

1.

 public function up() { Schema::create('categories', function (Blueprint $table) {

    $table->increments('id');
    $table->integer('parent_id'); //sub category id
    $table->string('name');  
    $table->rememberToken();
    $table->timestamps();

    });
}

這是我的產品表

2.

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('category_id');
        $table->string('product_name');
        $table->timestamps();
    });
}

這是我的類別 Model

3.類別.php

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class Category extends Model { protected $guarded=[];

    public function products(){
        return $this->hasMany('App\Product');
    }

    public function parent(){
        return $this->belongsTo('App\Category','parent_id','id');
    }
}

這是我的產品 Model

4.產品.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    public function category(){
        return $this->hasone('class::Category');
    }

}

現在這是我的ProductsController.php

5.ProductsController.php

<?php
namespace App\Http\Controllers;
use App\Category;
use App\Product;
use Session;
use Illuminate\Http\Request;
class ProductsController extends Controller
{
    public  function product(){
         return view('admin.products.product');
     }


}

這是我的product.blade.php文件

<form class="form-horizontal" method="post" action="{{route('add.product')}}" name="add_product" id="add_product" novalidate="novalidate">
                                @csrf

                                <div class="control-group">
                                    <label class="control-label">main Category </label>
                                    <div class="controls">
                                        <select name="category_id" id="category_id" style="width:220px;">

                                            @foreach(App\Category::all() as $cat)
                                                <option value="{{$cat->id}}" >{{ $cat->parent()->name ? $cat->parent()->name . ' -- ' : '' }}{{$cat->name}}</option>
                                            @endforeach

                                        </select>
                                    </div>
                                </div>

                                <div class="control-group">
                                    <label class="control-label">Product Name</label>
                                    <div class="controls">
                                        <input type="text" name="product_name" id="product_name">
                                    </div>
                                </div>

                                <div class="form-actions">
                                    <input type="submit" value="submit" class="btn btn-success">
                                </div>
                            </form>

我想在我的product.blade.php中使用這樣的數據

我想要什么數據

這就是為什么我在product.blade.php中使用此代碼

@foreach(App\Category::all() as $cat)
<option value="{{$cat->id}}" >{{ $cat->parent()->name ? $cat->parent()->name . ' -- ' : '' }}{{$cat->name}}</option>
@endforeach

但我面臨這樣的錯誤

ErrorException (E_ERROR)
Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$name (View: F:\laragon\www\flipcart\resources\views\admin\products\product.blade.php)
Previous exceptions
Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$name (0)

您可能希望在此代碼中查看許多內容,因為有幾個奇數位。

您收到的錯誤是由以下代碼引起的:

$cat->parent()->name

當您將關系作為方法而不是屬性(即->parent()而不是->parent )調用時,您正在訪問查詢構建器實例。

試試這個:

$cat->parent->name

然后,您的三元語句應替換為如下內容:

$cat->parent ? $cat->parent->name . ' -- ' : ''

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM