Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 打印Laravel中的行数_Php_Sql_Laravel - Fatal编程技术网

Php 打印Laravel中的行数

Php 打印Laravel中的行数,php,sql,laravel,Php,Sql,Laravel,我试图从MySQL打印Laravel中的行数,但出现以下错误: htmlspecialchars()要求参数1为字符串,对象为给定对象(视图:C:\wamp64\www\kont\resources\views\profile.blade.php) 我的模型中有两个函数。第一个函数从一个表返回有关用户的信息,另一个函数从另一个表计算该用户的朋友数。请在下面查看我的代码: HomeController.php public function profile(Request $request,$id

我试图从MySQL打印Laravel中的行数,但出现以下错误: htmlspecialchars()要求参数1为字符串,对象为给定对象(视图:C:\wamp64\www\kont\resources\views\profile.blade.php)

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

HomeController.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);

    }
  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;

        }
 @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>
                                    <td>Email</td>
                                    <td><a href="mailto:info@support.com">{{ $d->email }}</a></td>
                                 </tr>
                                 <td>Website</td>
                                 <td>
                                   {{ $d->website }}
                                 </td>
                                 </tr>
                                     @endforeach


                       @foreach($dt2 as $d2)
                     Number of friends: {{ $d }}
                     @endforeach
UserModel.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);

    }
  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;

        }
 @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>
                                    <td>Email</td>
                                    <td><a href="mailto:info@support.com">{{ $d->email }}</a></td>
                                 </tr>
                                 <td>Website</td>
                                 <td>
                                   {{ $d->website }}
                                 </td>
                                 </tr>
                                     @endforeach


                       @foreach($dt2 as $d2)
                     Number of friends: {{ $d }}
                     @endforeach
profile.blade.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);

    }
  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;

        }
 @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>
                                    <td>Email</td>
                                    <td><a href="mailto:info@support.com">{{ $d->email }}</a></td>
                                 </tr>
                                 <td>Website</td>
                                 <td>
                                   {{ $d->website }}
                                 </td>
                                 </tr>
                                     @endforeach


                       @foreach($dt2 as $d2)
                     Number of friends: {{ $d }}
                     @endforeach
@foreach($dt作为$d)
输入法:
{{$d->first_name}
普雷齐姆
{{$d->last_name}
罗德杰尼亚基准酒店
{{$d->出生日期}
波尔
穆斯克
电子邮件
网站
{{$d->website}
@endforeach
@foreach(dt2为$d2)
朋友数:{{$d}
@endforeach

DB::select返回一个结果数组。你应该使用

$data['dt'] = $podaciIzBaze[0];
但是,更优雅的方法如下:

$data['dt'] = UserModel::find($id);

find方法返回模型的第一行,其中主键等于$id

Number of friends:{{{$d}
应该是
Number of friends:{{$d2}

我建议对您的代码进行以下更改:

  • UserModel
    重命名为just
    User
  • 添加
    Friend
    型号
  • 用户
    模型和
    朋友
    模型之间添加一对多的雄辩关系
  • 将表名
    user\u-friends
    重命名为
    user\u-friends
    ——这样你就可以利用laravel的魔力
  • dt
    dt2
    不是描述性的-我不知道它们代表什么,我建议将它们重命名为:
    dt
    ->
    userData
    dt2
    ->
    totalFriends
  • 刀片文件将类似于:

     <tr>
        <td>Ime:</td>
        <td>{{ $userData->first_name }}</td>
     </tr>
     <tr>
        <td>Prezime</td>
        <td>{{ $userData->last_name }}</td>
     </tr>
     <tr>
        <td>Datum Rodjenja</td>
        <td>{{ $userData->birth_date }}</td>
     </tr>
     <tr>
     <tr>
        <td>Pol</td>
        <td>Musko</td>
     </tr>
     <tr>
        <td>Email</td>
        <td><a href="mailto:info@support.com">{{ $userData->email }}</a></td>
     </tr>
     <td>Website</td>
         <td>
           {{ $userData->website }}
         </td>
     </tr>
    
    
     Number of friends: {{ $totalFiends }}
    
    
    输入法:
    {{$userData->first_name}
    普雷齐姆
    {{$userData->last_name}
    罗德杰尼亚基准酒店
    {{$userData->出生日期}
    波尔
    穆斯克
    电子邮件
    网站
    {{$userData->website}
    朋友数:{{$TotalFidens}
    
    在第二行

    @foreach($dt2 as $d2)
        Number of friends: {{ $d }}  // 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)
        Number of friends: {{ $d2->friends }}
    @endforeach
    
    当您使用select查询时,它返回键“count(user_id)”,该键无法用于打印标准对象


    但是您应该开始使用Elount进行查询,而不是编写手动SQL查询。

    作为$d2)
    但是打印
    $d
    。你确定吗?我用$d2替换了它,得到了相同的错误。我用$d2替换了它,得到了相同的错误。你的解决方案对我非常有效!为什么您认为我应该使用雄辩的SQL而不是手动SQL?谢谢。请看一下这个答案。我用$d2替换了它,得到了相同的错误。我建议根据我的评论进行重构$d2是数据所在的位置,如果您在控制器中执行dd($dt2),您将看到$dt2包含的内容