您好。如何才能让laravel雄辩地加入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
})
});
在laravel刀片上它的工作很好但是在ajax上不起作用
答案 0 :(得分:1)
您必须加载author
关系:
$product = ProductModel::with('author')->get();
答案 1 :(得分:0)
这是因为响应数据不包含关系author
。在将数据发送到客户端(浏览器)之前,必须首先在服务器上加载关系。
这是Eager Loading发挥作用的地方:
$product = ProductModel::with('author')->get();