我想让当前登录用户输入年份和期限,并根据从数据库中获取相关记录....当我搜索表单时,似乎无法获取所需数据我收到错误< / p>
"SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'term'
in where clause is ambiguous (SQL: select * from `users` inner join
`cat1s` on `users`.`id` = `cat1s`.`user_id` inner join `cat2s` on
`users`.`id` = `cat2s`.`user_id` inner join `exams` on `users`.`id` =
`exams`.`user_id` where `users`.`id` = 21 and `term` = 1) "
查看
{{Form::open(['method'=>'GET','route'=>'results'])}}
<ul>
<li>{{Form::label('year','year of study')}}
{{Form::text('year', null, array("placeholder" => "year"))}}
{{--{{$errors->first('reg_no','<p class = "error">:message</p>')}}--}}
</li>
<li>{{Form::label('term','term')}}
{{ Form::text('term', null, array("placeholder" => "term")) }}
{{--{{$errors->first('firstname','<p class = "error">:message</p>')}}--}}
</li>
<li>
{{Form::submit('search')}}
</li>
</ul>
{{Form::close()}}
路线
Route::get('results', ['as' => 'results', 'uses' => 'Cat1sController@show']);
控制器
public function show()
{
$year = Input::get('year');
$term = Input::get('term');
$maks=DB::table('users')
->join('cat1s','users.id' , '=', 'cat1s.user_id' )
->join('cat2s','users.id' , '=','cat2s.user_id')
->join('exams','users.id' , '=','exams.user_id' )
->where('users.id','=', Auth::user()->id )
->where('term','LIKE',[$term] AND 'year',[$year])
->get();
return View::make('pages.result',compact('maks'));
}
部分pages.result视图
<table>
@foreach($maks as $mak)
<tr>
<td> {{$mak->$ENG}}</td>
<td> {{$mak->$MATH}}</td>
<td> {{$mak->$BIO}}</td>
<td> {{$mak->$CHEM}}</td>
<td> {{$mak->$PHY}}</td>
<td> {{$mak->$COMP}}</td>
<td> {{$mak->$MUSIC}}</td>
<td> {{$mak->$ART}}</td>
<td> {{$mak->$TOTAL}}</td>
<td> {{$mak->$AVRG}}</td>
<td> {{$mak->$GRADE}}</td>
<td> {{$mak->$POSTN}}</td>
</tr>
@endforeach
</table>
答案 0 :(得分:1)
改变这个:
->where('term','LIKE',[$term] AND 'year',[$year])
来,这个:
->where('users.term','LIKE',[$term] AND 'your_table.year',[$year])
答案 1 :(得分:1)
您必须添加包含&#39; term&#39;的表格的前缀在你的SQL请求中
$maks=DB::table('users')
->join('cat1s','users.id' , '=', 'cat1s.user_id' )
->join('cat2s','users.id' , '=','cat2s.user_id')
->join('exams','users.id' , '=','exams.user_id' )
->where('users.id','=', Auth::user()->id )
->where('**table.**term','LIKE',[$term] AND '**table.**year',[$year])
->get();
修改1 转储您的数据:
@foreach( $maks as $mak ) {
<tr>
<?php echo '<pre>'; var_dump($mak); echo '</pre>'; ?>
{# rest of your code #}
</tr>
@endforeach
你有&#34;数组到字符串转换&#34;错误,因为$ mak应该是一个字符串,并且它包含一个或多个数组。
刀片模板:{{$ var}}就像<?php echo $var; ?>
并且您无法回显数组,但您可以重新格式化数据。向我展示$mak
的转储,我给你一个片段
答案 2 :(得分:0)
MySQL错误表示您尝试查询的表中有多个名为term
的列。因此,请将特定的表名称前缀添加到列名称中users.term
。
另一个问题是:
->where('term','LIKE',[$term] AND 'year',[$year])
这是完全错误的。