Laravel 在 javascript 中的雄辩关系问题


Laravel eloquent relationship issue in javascript

这是我的网站模型

  class Website extends Model
{
    protected $table = 'website';
   public function links()
   {
    return $this->hasMany('App'Website_links')->where('crawler_status',1);
   }
}

和控制器代码

 if(Request::ajax()){
        $validator = Validator::make(Request::all(), [
            'page' => 'required',
        ]);
        if($validator->fails()){
            return Response::json(['success'=>false,'error'=>$validator->errors()->toArray()]);
        }
        $page = Request::get('page');
        $websites_data = Website::where('user_id',Auth::id())->skip(3*($page-1))->take(3)->get();
        return Response::json(['success'=>true,'success_data'=>$websites_data]);
    }

和Javascrpit代码

$(result.success_data).each(function( index,el) {
                console.log(el.project_name,el.website_url,el.links);
            });

在这里,我在el.links上未定义。在我的 HTML 中,我像这样完美

@foreach($data as $website)
                    <tr>
                        <td>{{$website['project_name']}}
                        </td>
                        <td><a href="{{$website['website_url']}}">{{$website['website_url']}}</a></td>
                        <td>{{count($website->links)}}</td></tr>
@endforeach

我想在 JavaScript 中计算 el.links,就像我在 JavaScript 中所做的那样 html.in 前两个值project_name和website_url完美地到来。

您必须加载关系才能将其包含在 JSON 输出中。

急于加载它....

$websites_data = Website::with('links')->where('user_id',Auth::id())->skip(3*($page-1))->take(3)->get();

或延迟加载它

$websites_data = Website::where('user_id',Auth::id())->skip(3*($page-1))->take(3)->get();
$websites_data->load('links');

使用

var obj = JSON.parse(el);
console.log(obj.project_name,obj.website,el.links)