Laravel красноречиво присоединяется в ajax - PullRequest
0 голосов
/ 01 мая 2018

Привет. Как я могу получить laravel eloquent join в функции успеха ajax?

это модель пользователя

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'first_name', 'last_name', 'email', 'country', 'type', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    function products(){
        return $this->hasMany("App\ProductModel" , "user_id");
    }
}

и это модель моей продукции

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ProductModel extends Model
{
    protected $table = 'products';
    protected $fillable = [
        'user_id','category','title','description','photo','price'
    ];
    public $timestamps = true;

    function author(){
        return $this->hasOne("App\User", "id", "user_id");
    }
}

это функция контроллера

public function getProduct(){
        $product= ProductModel::all();
        return response()->json($product);
    }

и это моя функция ajax

$.get("{{route('get.product')}}", function(data){
     console.log(data)  // console array on obj
     $(data).each(function(index,element){
        console.log(element.author)     // console undefined
     })
});

на лезвии ларавеллы его решетка работает, но на ajax не работает

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Это потому, что ответные данные не содержат отношения author. Перед отправкой данных клиенту (браузеру) необходимо сначала загрузить отношение на сервер.

Здесь Eager Loading вступают в игру:

$product = ProductModel::with('author')->get();
0 голосов
/ 01 мая 2018

Вы должны загрузить отношение author:

$product = ProductModel::with('author')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...