Php 打印Laravel中的行数
我试图从MySQL打印Laravel中的行数,但出现以下错误: htmlspecialchars()要求参数1为字符串,对象为给定对象(视图:C:\wamp64\www\kont\resources\views\profile.blade.php) 我的模型中有两个函数。第一个函数从一个表返回有关用户的信息,另一个函数从另一个表计算该用户的朋友数。请在下面查看我的代码: HomeController.phpPhp 打印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
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
重命名为justUser
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包含的内容