标签: laravel-3

如何在Laravel中使用SQL Server连接?

我得到了一个在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上查询但是它只是在没有给出任何配置的情况下停止.

php laravel laravel-4 laravel-3

21
推荐指数
2
解决办法
5万
查看次数

检查Laravel中的会话超时

我只是想知道是否有人知道如何在Laravel中检查会话超时.

您可以检查会话是否具有特定项目:

if (Session::has('name'))
{
     $name = Session::get('name');
}
Run Code Online (Sandbox Code Playgroud)

但您无法检查会话是否已过期.这样会很好,以便我能以更具体的方式向用户报告."你的会议已超时,请重新开始."

有什么想法吗?

php laravel laravel-3

20
推荐指数
1
解决办法
3万
查看次数

将laravel对象转换为数组

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上实施

php arrays laravel laravel-4 laravel-3

18
推荐指数
8
解决办法
12万
查看次数

在查询中使用AND的Laravel查询生成器

我想在查询构建器的末尾添加一个"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条款我找不到任何等价物.你能帮我解决这个问题吗?

php laravel-3

13
推荐指数
2
解决办法
4万
查看次数

没有用xdebug,PhpStorm和Laravel 3/mod_rewrite命中的断点

我非常绝望并且没有想法:

我为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脚本?

如果是这样,我们如何解决这个问题呢?

xdebug phpstorm laravel laravel-3

13
推荐指数
1
解决办法
1万
查看次数

在Laravel Fluent中使用Distinct

我有这个加入:

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').

任何人都可以指出我如何删除我的重复记录?我打赌这是我的另一个额头.

php fluent laravel laravel-3

13
推荐指数
1
解决办法
3万
查看次数

从Laravel中的多选表单中获取选定的值

要生成默认选择项目的下拉列表,请执行以下操作:

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') 仅返回最后选择的字符串.

php laravel laravel-3

12
推荐指数
2
解决办法
3万
查看次数

使用JSON请求体测试laravel控制器

我正在尝试为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编码体的测试方法?

phpunit laravel angularjs laravel-3

11
推荐指数
4
解决办法
1万
查看次数

在Laravel中使用auth保护所有管理员/路由

我是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并要求登录,这正是我需要它工作的方式.登录后,我被重定向到管理员/仪表板,这一切看起来都很好.然而,我有两个问题.

  1. 当我进入管理/注销时,我已经注销,但是用空白页面打招呼(它没有重定向到管理员/登录)

  2. 注销后,如果我转到管理员/仪表板,我会收到错误消息

渲染视图出错:[admin.dashboard]

试图获得非对象的属性

我在这做错了什么?我做得对吗?为管理员创建一个单独的包更合理吗?谢谢!

php authentication laravel laravel-3

10
推荐指数
3
解决办法
2万
查看次数

Laravel 3 Eloquent如何选择列为

我正试图弄清楚如何使用Eloquent为列添加别名.

那么,换句话说,如何使用Eloquent执行以下mysql查询?

SELECT occupation AS test FROM users WHERE occupation = 'PIMP';
Run Code Online (Sandbox Code Playgroud)

谢谢!

select alias laravel eloquent laravel-3

10
推荐指数
1
解决办法
1万
查看次数