簡體   English   中英

Laravel空對象hasMany關系

[英]Laravel null object hasMany relationship

解決了我不應該在模型中標注我的屬性。 由於某種原因,這使它無法正常工作。

我有兩個模型的以下結構,清單和圖像。 表格圖像具有FK listing_id ,該id引用表格清單上的id

我的雄辯清單模型:

namespace App\Models;

use Illuminate\Database\Eloquent\Model as Model;

class Listing extends Model {

    protected $table = 'listings';
    protected $connection = 'mysql';

    public $id;
    public $name;
    public $value;
    public $itemDescr;
    public $user_id;
    public $category_id;

    protected $fillable = [
        'id',
        'name',
        'value',
        'itemDescr',
        'user_id',
        'category_id'
    ];

    /**
     * Return images
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public function images()
    {
        return $this->hasMany('App\Models\Image');
    }

}

我雄辯的圖像模型:

namespace App\Models;
use Illuminate\Database\Eloquent\Model as Model;

class Image extends Model
{
    protected $table = 'images';
    protected $connection = 'mysql';

    public $id;
    public $imageType;
    public $title;
    public $filename;
    public $path;
    public $author_id;
    public $listing_id;
    public $user_id;
    public $size;
    public $width;
    public $height;


    protected $fillable = [
        'imageType',
        'title',
        'filename',
        'path',
        'author_id',
        'listing_id',
        'user_id',
        'size',
        'width',
        'height'
    ];

    /**
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function listings()
    {
        return $this->belongsTo('App\Models\Listing', 'listing_id');
    }

}

我的控制器:

/**
 * Return the full list of listings
 *
 * @param Request $request
 *
 * @return string
 */

    public function itemList(Request $request)
    {
        $listings = Listing::with('images')->get();

        return $listings;

    }

我似乎無法返回帶有圖像對象的列表-它們始終為null。 這是一個示例響應:

{id:6,名稱:“稀有商品”,值:“ 100”,itemDescr:“這是一個說明”,user_id:1,category_id:6,created_at:“ 2016-05-30 13:47:33” ,updated_at:“ 2016-05-30 13:47:33”,圖片:[]}

數據庫顯示此特定項目的兩個圖像,它們的listing_id為6。 我無法弄清楚可能出了什么問題,我幾乎嘗試了所有建議。 有任何想法嗎?

在Laravel表列中,它們的值保存在$attributes屬性中,Laravel使用__get()魔術方法獲取$attributes數據。 通過在模型上將public $listing_id定義為屬性,就像告訴Laravel:“嘿,這是listing_id而不是持有$attributes屬性,請改為返回它”。

定義關系時:

return $this->belongsTo('App\Models\Listing', 'listing_id', 'id');

將返回public $listing_id屬性,該屬性的值為null 刪除那些公共財產定義,它應該是可行的。

暫無
暫無

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

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