标签: laravel-4

如何在Laravel Eloquent查询中(或使用查询生成器)对表进行别名?

让我们说我们正在使用Laravel的查询构建器:

$users = DB::table('really_long_table_name')
           ->select('really_long_table_name.id')
           ->get();
Run Code Online (Sandbox Code Playgroud)

我正在寻找这个SQL的等价物:

really_long_table_name AS short_name
Run Code Online (Sandbox Code Playgroud)

当我必须输入大量的选择和数据时,这将特别有用(或者通常我也会在select的列别名中包含别名,并且它会在结果数组中使用).没有任何表别名,我会有更多的输入,一切都变得不那么可读.在laravel docs中找不到答案,有什么想法吗?

php laravel eloquent laravel-4

126
推荐指数
6
解决办法
15万
查看次数

Laravel Eloquent"在哪里"

我在编写查询时遇到问题laravel eloquent ORM.

我的疑问是

SELECT book_name,dt_of_pub,pub_lang,no_page,book_price  
FROM book_mast        
WHERE book_price NOT IN (100,200);
Run Code Online (Sandbox Code Playgroud)

现在我想将此查询转换为laravel eloquent.

laravel eloquent laravel-4

125
推荐指数
5
解决办法
19万
查看次数

PHP Composer更新"无法分配内存"错误(使用Laravel 4)

我只是无法解决这个问题.

我正在使用Linode 1G RAM基本计划.试图通过Composer安装一个包,它不会让我.我的内存限制在PHP.ini上设置为"-1"

我还能做些什么来安装它吗?

Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing thujohn/rss (dev-master df80a7d)
    Downloading: 100%         
PHP Fatal error:  Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:975
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///usr/loc...', 975, Array)
#1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(975): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(853): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(818): Symfony\Component\Console\Application->getTerminalDimensions()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(752): Symfony\Component\Console\Application->getTerminalWidth()
#5 phar:///usr/local/bin/com in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 975

Fatal error: …
Run Code Online (Sandbox Code Playgroud)

php laravel composer-php laravel-4

123
推荐指数
12
解决办法
14万
查看次数

Laravel - Route :: resource vs Route :: controller

我阅读文档的Laravel网站,堆栈溢出,并且谷歌,但还是不明白之间的差别Route::resourceRoute::controller.

其中一个答案说Route :: resource是为了crud.但是,使用Route :: controller,我们可以完成与Route :: resource相同的操作,我们只能指定所需的操作.

他们看起来像兄弟姐妹:

Route::controller('post','PostController');
Route::resource('post','PostController');
Run Code Online (Sandbox Code Playgroud)

我们如何选择使用什么?什么是好习惯?

laravel laravel-4 laravel-5

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

如何使用Eloquent删除表中的所有行?

我的猜测是使用以下语法:

MyModel::all()->delete();
Run Code Online (Sandbox Code Playgroud)

但那没用.我确信它非常简单,但我已经搜索了关于这个主题的文档而无法找到它!

laravel eloquent laravel-4

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

MVC(Laravel)在哪里添加逻辑

假设每当我进行CRUD操作或以特定方式修改关系时,我也想做其他事情.例如,每当有人发布帖子时,我也想将某些内容保存到表中进行分析.也许不是最好的例子,但总的来说有很多这种"分组"的功能.

通常我会将这种逻辑放入控制器中.在你想要在很多地方重现这个功能之前,这一切都很好.当你开始进入局部,创建一个API并生成虚拟内容时,就会出现干涸问题.

我看到管理它的方法是事件,存储库,库和添加到模型.以下是我对每个人的理解:

服务:这是大多数人可能会放置此代码的地方.我对服务的主要问题是,有时很难在其中找到特定功能,我觉得他们会忘记人们何时专注于使用Eloquent.我怎么知道我需要publishPost()在库中调用方法$post->is_published = 1

我看到这个工作得很好的唯一条件是,如果你只使用服务(理想情况下,Eloquent不能以某种方式从控制器一起无法访问).

最终,如果您的请求通常遵循您的模型结构,这似乎只会创建一堆额外的不必要的文件.

存储库:从我的理解,这基本上就像一个服务,但有一个接口,所以你可以在ORM之间切换,我不需要.

事件:从某种意义上说,我认为这是最优雅的系统,因为你知道你的模型事件总是会在Eloquent方法中被调用,所以你可以像往常一样编写你的控制器.我可以看到这些变得混乱,如果有人有大型项目的例子使用事件进行关键耦合,我希望看到它.

模型:传统上我会有类执行CRUD并处理关键耦合的类.这实际上让事情变得简单,因为你知道CRUD的所有功能+无论如何都要做到这一点.

很简单,但在MVC架构中,这通常不是我所看到的.从某种意义上说,虽然我更喜欢这种服务,因为它更容易找到,而且需要跟踪的文件较少.但它可能会有点混乱.我想听听这种方法的失败,以及为什么大多数人似乎都没有这样做.

每种方法有哪些优点/缺点?我错过了什么吗?

php design-patterns laravel laravel-4

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

管理Laravel中的关系,遵守存储库模式

在阅读了T. Otwell关于Laravel优秀设计模式的书之后,在Laravel 4中创建应用程序时,我发现自己为应用程序中的每个表创建了存储库.

我最终得到了以下表格结构:

  • 学生:身份证,姓名
  • 课程:id,name,teacher_id
  • 老师:id,姓名
  • 作业:id,name,course_id
  • 分数(充当学生和作业之间的枢轴):student_id,assignment_id,分数

我有所有这些表的查找,创建,更新和删除方法的存储库类.每个存储库都有一个与数据库交互的Eloquent模型.根据Laravel的文档,模型中定义了关系:http://laravel.com/docs/eloquent#relationships .

在创建新课程时,我所做的就是在课程资源库中调用create方法.该课程有作业,因此在创建作业时,我还想在课程中为每个学生在乐谱表中创建一个条目.我是通过Assignment Repository完成的.这意味着赋值存储库使用Assignment和Student模型与两个Eloquent模型进行通信.

我的问题是:由于此应用程序的大小可能会增加并且会引入更多关系,因此在存储库中与不同的Eloquent模型进行通信是一种好的做法,还是应该使用其他存储库来完成(我的意思是从Assignment存储库调用其他存储库) )还是应该在Eloquent模型中一起完成?

此外,将分数表用作作业与学生之间的转轴还是应该在其他地方完成,这是一种好习惯吗?

oop repository-pattern laravel eloquent laravel-4

114
推荐指数
4
解决办法
3万
查看次数

为php artisan.php服务设置端口

我们如何为测试服务器设置自定义端口?

通常我们这样做的时候

php artisan serve
Run Code Online (Sandbox Code Playgroud)

该文件夹服务为:

localhost:8000
Run Code Online (Sandbox Code Playgroud)

我们怎样才能访问一个文件夹:

localhost:8080
Run Code Online (Sandbox Code Playgroud)

我想在我的localhost上访问两个不同的开发站点.

php-5.4 laravel laravel-4

108
推荐指数
7
解决办法
14万
查看次数

Laravel空白的白色屏幕

我的laravel网站以前工作过,我最近升级到了Apache 2.4和PHP 5.5.7.

现在,我得到一个白色的空白屏幕,当我去laravel.mydomain.com,没有在Apache的错误日志,路线等应该不错,因为之前的工作.

当我向/var/sites/laravel/public/.htaccess插入无效行时,.htaccess正在加载,因为我得到500.

继承人我的.htaccess:

$ cat /var/sites/laravel/public/.htaccess
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)

继承我的虚拟主机指令:

DocumentRoot "/var/sites/laravel/public"
ServerName laravel.mydomain.com
<Directory "/var/sites/laravel/public">
    AllowOverride All
    allow from all
    Options +Indexes
    Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

和apachectl -S

$ /usr/local/apache2/bin/apachectl -S
VirtualHost configuration:
*:*                    is a NameVirtualHost
     default server mydomain.com (/usr/local/apache2/conf/extra/httpd-vhosts.conf:25)
     port * namevhost mydomain.com (/usr/local/apache2/conf/extra/httpd-vhosts.conf:25)
     port * …
Run Code Online (Sandbox Code Playgroud)

php apache frameworks laravel laravel-4

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

laravel抛出MethodNotAllowedHttpException

我想尝试一些非常基本的运行.我已经习惯了CI,现在正在学习Laravel 4,他们的文档并不容易!无论如何,我正在尝试创建一个登录表单,并确保通过在下一个表单中打印它来成功发布数据.我得到这个例外:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException

和我的MemberController.php:

    public function index()
    {
        if (Session::has('userToken'))
        {
            /*Retrieve data of user from DB using token & Load view*/
            return View::make('members/profile');
        }else{
            return View::make('members/login');
        }
    }

    public function validateCredentials()
    {
        if(Input::post())
        {
            $email = Input::post('email');
            $password = Input::post('password');
            return "Email: " . $email . " and Password: " . $password;
        }else{
            return View::make('members/login');
        }
    }
Run Code Online (Sandbox Code Playgroud)

和路线有:

Route::get('/', function()
{
    return View::make('hello');
});

Route::get('/members', 'MemberController@index');
Route::get('/validate', 'MemberController@validateCredentials');
Run Code Online (Sandbox Code Playgroud)

最后我的观点login.php有这个表单方向:

<?php echo Form::open(array('action' => 'MemberController@validateCredentials')); ?>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

routing laravel laravel-4

102
推荐指数
8
解决办法
33万
查看次数