我得到了一个在Laravel 3中制作的工作项目,我必须切换到MsSQL Server(不是我的电话,但是嗅......)而且我不理解这个数据库类型的Laravel配置......
我将默认内部database.php更改为此'default' => 'sqlsrv'然后我在sqlsrv数组中配置了主机,数据库,用户名和密码,但后来我收到此错误消息:
此扩展需要Microsoft SQL Server 2012 Native Client ODBC驱动程序与SQL Server进行通信
经过一些研究后我发现我们需要SQLSRV的PDO,我已经将其作为5.4版本而且phpinfo我得到了这个,pdo_sqlsrv support : enabled所以它看起来都是正确的但同时它似乎要求ODBC SQLSRV连接,我真的需要用那个?
我宁愿直接从Laravel数据库连接连接......但即使我需要它并且我创建了一些与服务器的ODBC连接,我如何将它们放在我的配置中?这是我在配置中的内容(当然my...是由我的真实细节替换):
'sqlsrv' => array(
'driver' => 'sqlsrv',
'host' => 'myServerIP',
'database' => 'myDatabase',
'username' => 'myUsername',
'password' => 'myPassword',
'prefix' => '',
),
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,我发现接近我的问题的唯一的事情是来自Laravel论坛的这个链接:Laravel在SQL Server上查询但是它只是在没有给出任何配置的情况下停止.
我只是想知道是否有人知道如何在Laravel中检查会话超时.
您可以检查会话是否具有特定项目:
if (Session::has('name'))
{
$name = Session::get('name');
}
Run Code Online (Sandbox Code Playgroud)
但您无法检查会话是否已过期.这样会很好,以便我能以更具体的方式向用户报告."你的会议已超时,请重新开始."
有什么想法吗?
Laravel输出:
Array
(
[0] = stdClass Object
(
[ID] = 5
)
[1] = stdClass Object
(
[ID] = 4
)
)
Run Code Online (Sandbox Code Playgroud)
我想将其转换为普通数组.只是想删除它stdClass Object.我也试过使用->toArray();但是我收到了一个错误:
在非对象上调用成员函数toArray().
我怎样才能解决这个问题?
功能已在http://www.srihost.com上实施
我想在查询构建器的末尾添加一个"AND"子句,代码如下所示:
$orderers = DB::table('address')->where(function($query) use ($term) {
$query->where('id', 'LIKE', '%' . $term . '%')
->or_where('name', 'LIKE', '%' . $term . '%')
->or_where('status', 'LIKE', '%' . $term . '%')
->and_clause_goes_here('is_orderer', '=', '1');
})->paginate($per_page);
Run Code Online (Sandbox Code Playgroud)
但是在Laravel中搜索AND条款我找不到任何等价物.你能帮我解决这个问题吗?
我非常绝望并且没有想法:
我为Laravel 3项目配置了xdebug和PhpStorm.在Mac OS X Apache上本地运行项目,因此PhpStorm和Web应用程序在同一台机器上运行.配置虚拟主机,以便localhost.lt指向Laravel的公共目录.
php.ini中的相关xdebug条目:
zend_extension = /usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
[xdebug]
xdebug.idekey="PHPSTORM"
xdebug.remote_enable=1
xdebug.profiler_enable=1
xdebug.remote_log=/var/log/xdebug_remote.log
xdebug.remote_connect_back=1
Run Code Online (Sandbox Code Playgroud)
确认扩展已加载.
设置PHP Web应用程序调试/运行配置,没有任何路径映射,因为没有符号链接,Web服务器和PhpStorm上的文件夹完全相同(因为Web服务器在同一台机器上).
当通过从IDE的"调试"发射,xdebug_remote.log正确地显示,我们已经在应用程序/库的一个文件中设置的断点:
<- breakpoint_set -i 5 -t line -f
file:///Users/RalfR/src/livetime/application/libraries/LiveTime.php -n 676
->
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="9230016"></response>
Run Code Online (Sandbox Code Playgroud)
但是,当我们单击从LiveTime.php库调用该函数的链接时,不会触发断点.日志显示:
<- stack_get -i 6 ->
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="6"><stack where="{main}" level="0" type="file" filename="file:///Users/RalfR/src/livetime/public/index.php" lineno="14"></stack></response>
<- run -i 7 ->
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="stopping" reason="ok"></response>
<- run -i 8
Log closed at 2013-04-22 21:03:57
Run Code Online (Sandbox Code Playgroud)
与许多框架一样,Laravel使用.htaccess mod_rewrite通过public/index.php来管道所有内容.可能这是导致PhpStorm/xdebug无法捕获application/libraries/LiveTime.php中的断点的原因,因为xdebug似乎从未执行过LiveTime.php脚本?
如果是这样,我们如何解决这个问题呢?
我有这个加入:
Return DB::table('volunteer')
->join('volunteer_volunteer_category', 'volunteer_volunteer_category.volunteer_id', '=', 'volunteer.id')
->select(array('*','volunteer.id AS link_id'))
->where('is_published', '=', 1)
Run Code Online (Sandbox Code Playgroud)
但不出所料地返回重复记录,所以我尝试使用distinct():
Return DB::table('volunteer')
->join('volunteer_volunteer_category', 'volunteer_volunteer_category.volunteer_id', '=', 'volunteer.id')
->select(array('*','volunteer.id AS link_id'))
->distinct()
->where('is_published', '=', 1)
Run Code Online (Sandbox Code Playgroud)
但我想distinct() 在一个特定的单个字段上使用,我可以在SQL中轻松完成.似乎distinct()不带参数,即我不能说distinct('volunteer.id').
任何人都可以指出我如何删除我的重复记录?我打赌这是我的另一个额头.
要生成默认选择项目的下拉列表,请执行以下操作:
echo Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), 'S');
Run Code Online (Sandbox Code Playgroud)
所以我生成了一个下拉列表,默认情况下选择了多个项目,方法如下:
echo Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), array('S', 'M'), array('multiple'));
Run Code Online (Sandbox Code Playgroud)
但是,如何获得多个选定值?
Input::get('size') 仅返回最后选择的字符串.
我正在尝试为Laravel控制器编写一个phpunit测试,该控制器期望使用JSON格式的主体发布请求.
控制器的简化版本:
class Account_Controller extends Base_Controller
{
public $restful = true;
public function post_login()
{
$credentials = Input::json();
return json_encode(array(
'email' => $credentials->email,
'session' => 'random_session_key'
));
}
}
Run Code Online (Sandbox Code Playgroud)
目前我有一个测试方法正确地将数据作为urlencoded表单数据发送,但我无法弄清楚如何将数据作为JSON发送.
我的测试方法(我用的是GitHub的要点在这里写测试时)
class AccountControllerTest extends PHPUnit_Framework_TestCase {
public function testLogin()
{
$post_data = array(
'email' => 'user@example.com',
'password' => 'example_password'
);
Request::foundation()->server->set('REQUEST_METHOD', 'POST');
Request::foundation()->request->add($post_data);
$response = Controller::call('account@login', $post_data);
//check the $response
}
}
Run Code Online (Sandbox Code Playgroud)
我在前端使用angularjs,默认情况下,发送到服务器的请求是JSON格式.我宁愿不改变它发送urlencoded形式.
有谁知道如何编写一个为控制器提供JSON编码体的测试方法?
我是laravel的新手,我在第一次申请时设置了管理面板授权.我目前设置文件的方式是:
controllers/
admin/
dashboard.php
settings.php
non-admin-controller1.php
non-admin-controller1.php
views/
admin/
dashboard.blade.php
login.blade.php
template.blade.php
non-admin-view1.php
non-admin-view1.php
non-admin-view1.php
Run Code Online (Sandbox Code Playgroud)
......这些是我的路线
Route::get('admin/login', function()
{
return View::make('admin.login');
});
Route::get('admin/logout', function()
{
return Auth::logout();
return Redirect::to('admin/login');
});
Route::post('admin/login', function()
{
$userdata = array('username' => Input::get('username'),
'password' => Input::get('password'));
if (Auth::attempt($userdata))
{
return Redirect::to('admin');
}
else
{
return Redirect::to('admin/login')->with('login_errors',true);
}
});
Route::controller('admin.dashboard');
Route::get('admin', array('before' => 'auth', function() {
return Redirect::to_action('admin@dashboard');
}));
Route::filter('auth', function()
{
if (Auth::guest()) return Redirect::to('admin/login');
});
Run Code Online (Sandbox Code Playgroud)
当我去/ admin时,我被重定向到admin/login并要求登录,这正是我需要它工作的方式.登录后,我被重定向到管理员/仪表板,这一切看起来都很好.然而,我有两个问题.
当我进入管理/注销时,我已经注销,但是用空白页面打招呼(它没有重定向到管理员/登录)
注销后,如果我转到管理员/仪表板,我会收到错误消息
渲染视图出错:[admin.dashboard]
试图获得非对象的属性
我在这做错了什么?我做得对吗?为管理员创建一个单独的包更合理吗?谢谢!
我正试图弄清楚如何使用Eloquent为列添加别名.
那么,换句话说,如何使用Eloquent执行以下mysql查询?
SELECT occupation AS test FROM users WHERE occupation = 'PIMP';
Run Code Online (Sandbox Code Playgroud)
谢谢!