Laravel Ключ массива существует и содержит данные, но ничего не возвращает при доступе к нему - PullRequest
0 голосов
/ 15 января 2020

У меня есть отношения между Продукт и Фото Модели.

Продукт Модель:

use Illuminate\Database\Eloquent\Model;
use App\Product;
use App\Photo;

class Product extends Model
{
    public function photos() {
        return $this->hasMany(Photo::class, 'product_id');
    }
}

Фото Модель:

use Illuminate\Database\Eloquent\Model;
use App\Photo;
use App\Product;

class Photo extends Model
{
    public function product() {
        return $this->belongsTo(Product::class);
    }
}

Когда я получаю такие продукты, как:

$product = Product::find($id)->with('photos')->first();

dd($product);

Выход:

{
    "id":1,
    "title":"some product",
    "photos":[
        {
            "id":1,
            "path":"a photo 1 path"
        },
        {
            "id":2,
            "path":"a photo 2 path"
        },
        {
            "id":3,
            "path":"a photo 3 path"
        }
    ]
}

Проблема когда я пытаюсь получить доступ $product->photos, я ничего не получаю. как пустой ключ.

Если я пытаюсь dd($product->photos), я получаю null

Ключ массива существует и содержит данные, почему при доступе к нему он ничего не возвращает?

1 Ответ

1 голос
/ 15 января 2020

Я разобрался в проблеме. это конфликт

У меня был столбец с именем photos in products table, и он совпадает с именем отношения:

public function photos() { // this photos name
    return $this->hasMany(Photo::class, 'product_id');
}

, поэтому, когда я пытался получить доступ photos он вызывал столбец photos , а не имя relashionship, и столбец был пуст, и поэтому он всегда ничего не возвращал.

Спасибо.

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