小编Rus*_*ack的帖子

查询Laravel查询范围内的相关模型

我有一个查询范围方法,用于过滤模型作者在Foo模型上的结果.复杂的是作者没有直接关系.

Foo属于Bar and Bar属于User.如果Foo属于User,我可以这样做:

public function scopeAuthorOnly($query, User $user)
{
    return $query->whereuser_id($user->id);
}
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,因为Foo模型没有user_id列,而是有一个bar_id列.但是,我不确定如何以过滤user_id的方式构建查询.

有什么指针吗?

laravel eloquent laravel-4

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

定义Mail :: send()方法的电子邮件地址

抱歉,如果我在这里遗漏了一些东西,因为我是Laravel的新手,但是当我向Mail :: send()方法发送一个闭包以定义邮件收件人时,如果电子邮件地址可用于全局范围,则可以正常工作,例如这个:

Mail::send('frontend.emails.default', $data, function($message) 
{
    $message->to(Input::get('email'))->subject('Hi');
});
Run Code Online (Sandbox Code Playgroud)

但是,如何将作用域中的值传递给调用方法?例如:

$user = User::find($id);

Mail::send('frontend.emails.default', $data, function($message) 
{
    $message->to($user->email)->subject('Hi');
});
Run Code Online (Sandbox Code Playgroud)

我尝试将它添加到$ data数组,但是在视图中使用它并且在回调中不可用.

谢谢你的帮助.

laravel laravel-4

8
推荐指数
1
解决办法
4459
查看次数

一个类的实例可以在JavaScript中替换自己吗?

我在全局范围内有一个变量,它被分配了一个类的实例,如下所示:

window.someInstance = new MyClass();
Run Code Online (Sandbox Code Playgroud)

稍后,我需要用新实例替换该变量,但是在类本身的方法中这样做是否可行/可接受?例如:

function MyClass () {

    this.myClassMethod = function () {
        window.someInstance = new MyClass();
    };

}

window.someInstance = new MyClass();
window.someInstance.myClassMethod.call();
Run Code Online (Sandbox Code Playgroud)

我知道一个奇怪的场景,但它干净利落,我只是不确定这是否会产生任何内存或引用问题?

谢谢

javascript

7
推荐指数
1
解决办法
1344
查看次数

在单元测试中嘲笑时未找到Laravel外观类

我可能在这里遗漏了一些东西但是我有一个非常简单的帮助器类来创建一个目录:

// Helper class

<?php namespace MyApp\Helpers;

    use User;
    use File;

    class FileSystemHelper
    {
        protected $userBin = 'users/uploads';

        public function createUserUploadBin(User $user)
        {
            $path = $this->userBin . '/' . $user->id;

            if ( ! File::isDirectory($path))
            {
                File::makeDirectory($path);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

以及相关测试:

// Associated test class

<?php 

    use MyApp\Helpers\FileSystemHelper;

    class FileSystemHelperTest extends TestCase {

        protected $fileSystemHelper;

        public function setUp()
        {
            $this->fileSystemHelper = new FileSystemHelper;
        }

        public function testNewUploadBinCreatedWhenNotExists()
        {
            $user = new User; // this would be mocked

            File::shouldReceive('makeDirectory')->once();

            $this->fileSystemHelper->createUserUploadBin($user);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

phpunit laravel mockery laravel-4

7
推荐指数
1
解决办法
4223
查看次数

如何使用Eloquent平均多列?

我希望在相关模型上获得多列的平均值,如下所示:

$this->reviews()->avg('communication', 'friendliness')
Run Code Online (Sandbox Code Playgroud)

沟通和友善是一系列列名.但是看起来聚合函数只支持单列名,所以我这样做:

$attributes = array('communication', 'friendliness');
$score = array();

foreach ($attributes as $attribute)
{
    $score[] = $this->reviews()->avg($attribute);
}

return round(array_sum($score) / sizeof($attributes), 1);
Run Code Online (Sandbox Code Playgroud)

这导致多个查询.有关于最佳实践的建议吗?

谢谢

laravel eloquent

7
推荐指数
1
解决办法
5161
查看次数

舍入到PHP中最近的可用时隙

我一直在努力工作一个小时左右,并且空白了.基本上我需要花费当前时间,增加30分钟,然后向下舍入到接下来的15分钟.

例子:

  • 如果它现在是20:00,结果= 20:45
  • 如果它现在是20:10,结果= 20:45
  • 如果它现在是20:16,结果= 21:00
  • 如果它现在是20:35,结果= 21:15

我的PHP生疏了,我一直在混淆日期添加和圆形方法试图让它工作,我知道它很简单 - 刚刚用完了想法!

谢谢

php date rounding

6
推荐指数
1
解决办法
1723
查看次数

覆盖核心Laravel 4类方法

抱歉,如果这是一个愚蠢的问题,因为很多Laravel 4对我来说都是新手.我试图覆盖核心密码功能中的几个方法,因为我想定义自己的密码验证规则(在发布时硬编码到核心),并更改错误报告的方法($ errors数组用于其他形式,而不是基于会话的).

所以我的方法是在/ app/lib/MyProject/User中创建一个名为Password.php的新类,如下所示:

<?php namespace MyProject\User;

use Closure;
use Illuminate\Mail\Mailer;
use Illuminate\Routing\Redirector;
use Illuminate\Auth\UserProviderInterface;

    class Password extends \Illuminate\Support\Facades\Password
    {
        /**
     * Reset the password for the given token.
     *
     * @param  array    $credentials
     * @param  Closure  $callback
 * @return mixed
 */
public function reset(array $credentials, Closure $callback)
{
    // If the responses from the validate method is not a user instance, we will
    // assume that it is a redirect and simply return it from this method and …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-4

5
推荐指数
1
解决办法
3193
查看次数

在订单确认电子邮件中使用客户名

我看过很多文章(大多是3-5岁),详细介绍了将客户的名字输入订单确认电子邮件的各种方法,但我得到的是空白或未解析的PHP.

例如:

<?php echo $this->__('Hello, %s', Mage::getSingleton('customer/session')->getCustomer()->getFirstname()); ?>
Run Code Online (Sandbox Code Playgroud)

像这样在电子邮件中呈现:

__('Hello,%s',Mage :: getSingleton('customer/session') - > getCustomer() - > getFirstname()); ?>

有人能指出我正确的方向吗?这是在Community Edition 1.7上.

谢谢

magento magento-1.7

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