我在下面的代码中加入了webInformation
和weblinks
以及webLink
字段。
$getResult = DB::table('webInformation')
->join('webLinks', function($join)
{
$join->on('webLinks.id', '=', 'webInformation.weblink');
})
->get();
此查询获取结果错误:
Illuminate \ Database \ QueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'ads.weblinks' doesn't exist (SQL: select * from `webInformation` inner join `weblinks` on `weblinks`.`id` = `webInformation`.`weblink`
但我可以在phpMyadmin中获得成功。
模特: webInformation:
class webInformation extends Eloquent{
protected $table='webInformation';
}
网络链接:
class webLinks extends Eloquent{
protected $table='weblinks';
}
表:
所有表格和字段都是正确的。
toSql Command:
$getResult = DB::table('webInformation')
->join('weblinks', function($join)
{
$join->on('weblinks.id', '=', 'webInformation.weblink');
})
->toSql();
toSql Result:
BadMethodCallException
Call to undefined method Illuminate\Database\Query\Builder::toSql()
框架版本:
Laravel Framework version 4.1.23
答案 0 :(得分:1)
您不需要使用DB::table()
代替Eloquent
方式:
$result = WebInformation::join('webInformation.weblink', '=', 'webLinks.id')->get();
或者这个:
$result = DB::table('WebInformation')->join('webInformation.weblink', '=', 'webLinks.id')->get();
这应该有效:
$sql = WebInformation::join('webInformation.weblink', '=', 'webLinks.id')->toSql();
您也可以使用它来记录上一个查询:
dd(DB::getQueryLog());