为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 中打印行数

在 Laravel 中打印行数

PHP
慕的地6264312 2023-04-21 15:24:31
我正在尝试从 MySQL 打印 Laravel 中的行数,但出现此错误: htmlspecialchars() expects parameter 1 to be string, object given (View: C:\wamp64\www\kont\resources\views\profile.blade. PHP)我的模型中有两个函数。第一个函数从一个表返回有关用户的信息,另一个函数从另一个表计算该用户的朋友数。请在下面查看我的代码:家庭控制器.phppublic 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>
查看完整描述

3 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

在第二行


@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

当您使用选择查询时,它返回的键“count(user_id)”不能与标准对象一起使用以进行打印。


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


查看完整回答
反对 回复 2023-04-21
?
喵喔喔

TA贡献1735条经验 获得超5个赞

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

$data['dt'] = $podaciIzBaze[0];

但是,更优雅的方法如下:

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

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


查看完整回答
反对 回复 2023-04-21
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

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

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

  1. UserModel重命名为User

  2. 添加Friend模型

  3. User在模型和Friend模型之间添加一对多的雄辩关系

  4. 将表名重命名user_frienduser_friends- 这样你就可以利用 laravel 的魔力

  5. dt并且dt2没有描述性 - 我不知道它们代表什么,我建议将它们重命名为: dt-> userData dt2->totalFriends

public function profile(User $user){

    $userData = $user->only([

        'first_name',

        'last_name',

        'email',

        'website',

        'birth_date',

    ]);


    return view('profile', [

        'userData' => $userData,

        'totalFriends' => $user->friends->count(),

    ]);


}

刀片文件看起来类似于:


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


查看完整回答
反对 回复 2023-04-21
  • 3 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信