Свойство [products] не существует в этом экземпляре коллекции - PullRequest
0 голосов
/ 20 апреля 2020

В моем приложении я сначала извлекаю категории продуктов с продуктами, теперь я хочу извлечь продукты из категорий продуктов, но я получаю следующую ошибку:

Property [products] does not exist on this collection instance.

Так я сначала получаю категории, а затем продукты

$productCategories = ProductCategory::with('products')->get(); //This works

$products = $productCategories->products; //Then this gives me error

Вот мои модели и миграции:

class Product extends FilterableModel
{


    protected $table = 'products';

    public function category()
    {
        return $this->belongsTo('App\Models\ProductCategory', 'productcategory_id');
    }
class ProductCategory extends FilterableModel
{


    protected $table = 'productcategories';


    public function products()
    {
        return $this->HasMany('App\Models\Product', 'productcategory_id');
    }


}
Schema::create('products', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedInteger('productcategory_id')->index();
            $table->foreign('productcategory_id')->references('id')->on('productcategories')->onDelete('cascade')->onUpdate('cascade');
            $table->string('title');
            $table->string('slug');
            $table->string('url');
            $table->text('body')->nullable();
            $table->string('image')->nullable();
            $table->boolean('isVisible')->default(false);
            $table->boolean('isFeatured')->default(false);
            $table->integer('stock')->default(0);
            $table->decimal('originalPrice', 5,2)->default(0.00);
            $table->decimal('finalPrice', 5,2)->default(0.00);
            $table->timestamps();
        });
Schema::create('productcategories', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title')->unique();
            $table->string('slug')->unique();
            $table->string('url')->unique();
            $table->text('body')->nullable();
            $table->string('image')->default(config('app.defaultImage'));
            $table->string('icon')->default('fa fa-tag');
            $table->boolean('isVisible')->default(false);
            $table->boolean('isFeatured')->default(false);
            $table->timestamps();
        });

1 Ответ

2 голосов
/ 20 апреля 2020

Итак, ваша $productCategories переменная является коллекцией ProductCategory экземпляров. Если вы хотите получить продукты из всех них, вам нужно зациклить их:

foreach ($productCategories as $productCategory) {
   dump($productCategory->products);
}

Если вы хотите получить продукты одного из productCategory, вам нужно выбрать их из базы данных:

$productCategory = ProductCategory::findOrFail($productCategoryId);
dump($productCategory->products);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...