一对多关系并在 balde laravel 中获取信息

one to many relation and get information in balde laravel

我有 2 table 他们有一对多关系,我想在 blade

中获取所有客户信息和名称用户

是用户模型

 public function FirstClients(){

        return $this->hasMany("App\Models\FirstClient");
    }

是客户端模型

 public function User(){
        return $this->belongsTo('App\Models\User');
    }

是控制器

   $allclients= DB::table('first_clients')->get();

        return view('admin.client.allclients' , compact('allclients'));

这是blade

@foreach ($allclients as $client)
                        <tr>
                            <td>{{ $client->user->name}}</td>
                        <tr/>
@endforeach

我有这个错误

未定义属性:stdClass::$user

您必须使用 first_clients class 来获取模型对象客户端中的数据表示 例如

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

    class FirstClient extends Model
    {
        /**
         * The table associated with the model.
         *
         * @var string
         */
        protected $table = 'first_clients';
    
    
        public function user(){
            return $this->belongsTo('App\Models\User');
        }
    
    
    }

在你的控制器中

$allclients = FisrstClient::all();

return view('admin.client.allclients', compact('allclients'));

您使用的方法名称区分大小写。尝试对模型中的关系使用驼峰命名法 现在您必须将方法名称更改为 user()

客户端模型

public function user() {
  return $this->belongsTo('App\Models\User');
}

Blade 查看

@foreach ($allclients as $client)
  <tr>
    <td>{{ $client->user->name}}</td>
  <tr/>
@endforeach

控制器
您需要使用 eloquent 才能使用关系。

$allclients= FirstClient::with('user')->get();

return view('admin.client.allclients' , compact('allclients'));