在 Laravel 中打印行数

我正在尝试从 MySQL 打印 Laravel 中的行数,但出现此错误: htmlspecialchars() expects parameter 1 to be string, object given (View: C:\wamp64\www\kont\resources\views\profile.blade. PHP)


我的模型中有两个函数。第一个函数从一个表返回有关用户的信息,另一个函数从另一个表计算该用户的朋友数。请在下面查看我的代码:


家庭控制器.php


public function profile(Request $request,$id){

        $model = new UserModel();

 $podaciIzBaze = $model->userdata($id);

 $data = array();

 $data['dt'] = $podaciIzBaze;


$model2 = new UserModel();

 $podaciIzBaze2 = $model2->countfriends($id);


 $data['dt2'] = $podaciIzBaze2;


         return view('profile',$data);


    }

用户模型.php


  class UserModel extends Model

    {

        //

        public function userdata($id){

            $query = DB::select("SELECT first_name,last_name,email,website,birth_date FROM users where id = $id");

            return $query;

        }


        public function countfriends($id){


            $query=DB::SELECT("SELECT count(user_id) from user_friend where user_id = $id");

            return $query;


        }

配置文件.blade.php


 @foreach($dt as $d)

                                 <tr>

                                    <td>Ime:</td>

                                    <td>{{ $d->first_name }}</td>

                                 </tr>

                                 <tr>

                                    <td>Prezime</td>

                                    <td>{{ $d->last_name }}</td>

                                 </tr>

                                 <tr>

                                    <td>Datum Rodjenja</td>

                                    <td>{{ $d->birth_date }}</td>

                                 </tr>

                                 <tr>

                                 <tr>

                                    <td>Pol</td>

                                    <td>Musko</td>

                                 </tr>

                                 <tr>


慕的地6264312
浏览 139回答 3
3回答

FFIVE

在第二行@foreach($dt2 as $d2)&nbsp; &nbsp; Number of friends: {{ $d }}&nbsp; // Here it should be $d2@endforeach它应该是 $d2 而不是 $d。编辑 1问题出在你的第二个函数 countfriends($id) 上。使用以下代码$query=\DB::select("SELECT count(user_id) as friends from user_friend where user_id = $id");然后在视图文件中使用:@foreach($dt2 as $d2)&nbsp; &nbsp; Number of friends: {{ $d2->friends }}@endforeach当您使用选择查询时,它返回的键“count(user_id)”不能与标准对象一起使用以进行打印。但是您应该开始使用 Eloquent 进行查询,而不是手动编写 SQL 查询。

喵喔喔

DB::select 返回一个结果数组。你应该使用$data['dt']&nbsp;=&nbsp;$podaciIzBaze[0];但是,更优雅的方法如下:$data['dt']&nbsp;=&nbsp;UserModel::find($id);find 方法返回模型的第一行,其中主键等于 $id

喵喵时光机

Number of friends: {{ $d }}应该Number of friends: {{ $d2 }}我建议对您的代码进行以下更改:UserModel重命名为User添加Friend模型User在模型和Friend模型之间添加一对多的雄辩关系将表名重命名user_friend为user_friends- 这样你就可以利用 laravel 的魔力dt并且dt2没有描述性 - 我不知道它们代表什么,我建议将它们重命名为:&nbsp;dt->&nbsp;userData&nbsp;dt2->totalFriendspublic function profile(User $user){&nbsp; &nbsp; $userData = $user->only([&nbsp; &nbsp; &nbsp; &nbsp; 'first_name',&nbsp; &nbsp; &nbsp; &nbsp; 'last_name',&nbsp; &nbsp; &nbsp; &nbsp; 'email',&nbsp; &nbsp; &nbsp; &nbsp; 'website',&nbsp; &nbsp; &nbsp; &nbsp; 'birth_date',&nbsp; &nbsp; ]);&nbsp; &nbsp; return view('profile', [&nbsp; &nbsp; &nbsp; &nbsp; 'userData' => $userData,&nbsp; &nbsp; &nbsp; &nbsp; 'totalFriends' => $user->friends->count(),&nbsp; &nbsp; ]);}刀片文件看起来类似于:&nbsp;<tr>&nbsp; &nbsp; <td>Ime:</td>&nbsp; &nbsp; <td>{{ $userData->first_name }}</td>&nbsp;</tr>&nbsp;<tr>&nbsp; &nbsp; <td>Prezime</td>&nbsp; &nbsp; <td>{{ $userData->last_name }}</td>&nbsp;</tr>&nbsp;<tr>&nbsp; &nbsp; <td>Datum Rodjenja</td>&nbsp; &nbsp; <td>{{ $userData->birth_date }}</td>&nbsp;</tr>&nbsp;<tr>&nbsp;<tr>&nbsp; &nbsp; <td>Pol</td>&nbsp; &nbsp; <td>Musko</td>&nbsp;</tr>&nbsp;<tr>&nbsp; &nbsp; <td>Email</td>&nbsp; &nbsp; <td><a href="mailto:info@support.com">{{ $userData->email }}</a></td>&nbsp;</tr>&nbsp;<td>Website</td>&nbsp; &nbsp; &nbsp;<td>&nbsp; &nbsp; &nbsp; &nbsp;{{ $userData->website }}&nbsp; &nbsp; &nbsp;</td>&nbsp;</tr>&nbsp;Number of friends: {{ $totalFiends }}
打开App,查看更多内容
随时随地看视频慕课网APP