Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 4 » Вопрос по timestamp » 21.08.2014 15:26:38

Как-то так:

use Carbon\Carbon;

User::whereBetween('date', array(Carbon::now()->startOfDay(), Carbon::now()->endOfDay()))->get();

#3 Laravel 4 » Eloquent сортировка по расчетному полю » 14.08.2014 18:01:10

flatter
Ответов: 1

Возможно ли отсортировать по полю которое рассчитывается по формуле.

Например имеем таблицу точек с полями X, Y, Z

Необходимо для каждой точки вывести соседей отсортированных по увеличению расстояний от исходной.

dist = (xa - xb)2 + (ya - yb)2 + (za - zb)2

#4 Re: Laravel 4 » Как работать с результатом DB::select? » 30.05.2014 22:58:32

Напишите откуда берется $usefuls_id я не совсем понимаю что вы там хотите сделать.

#5 Re: Laravel 4 » Как работать с результатом DB::select? » 30.05.2014 21:19:18

У вас в  $usefuls_id должна быть или коллекция или массив.

#7 Laravel 4 » $collection->GroupBy() обход коллекции с группировками » 30.05.2014 21:07:05

flatter
Ответов: 0

Подскажите как обходить коллекцию с группировкой?

Скажем получаю запросом таблицу с полями Поле1, Поле2, Поле3

Нужно сгруппировать по этим полям и обойти для вывода:

Поле1_1
-Поле2_1
--Поле3_1
--Поле3_2
-Поле2_2
--Поле3_3
--Поле3_4

Не могу нануглить примера своя мысль была:

foreach ($collection->GroupBy('Поле1', 'Поле2', 'Поле3') as $Поле1) {

}

Но не выходит.

#8 Re: Laravel 4 » Как работать с результатом DB::select? » 30.05.2014 20:06:19

Я могу ошибаться но по-моему

$usefuls = Useful::whereIn('id', $usefuls_id->toArray( ))->get();

Не проверял!

#9 Laravel 4 » Collection но не Eloquent » 28.05.2014 16:17:24

flatter
Ответов: 0

Приветствую!
Спрошу наверно глупость но:

Как реализовать следующее:

Есть Модель Продукты у нее есть реквизит Тип

У типа есть код, наименование и прочие реквизиты
Но типов не так много и они статичные, хранить их в БД глупо.

Хочется иметь класс Тип с фиксированным набором записей которые можно присваивать в реквизиты другим объектам.

#10 Re: Laravel 4 » Eloquent ORM Выборка по связи многие ко многим » 09.05.2014 10:35:40

Ruzarh пишет:

Но по факту двумя запросами по индексу этот запрос в разы легче для базы.

т.е. если сделать 3 запроса:
1. Все prototype_id из model_prototype где model_id = $this->model_id
2. Все model_id из model_prototype где prototype_id в списке полученном в шаге 1
3. Все модели model_id которых в списке полученном в шаге 2

То это будет эффективнее?

#11 Re: Laravel 4 » Eloquent ORM Выборка по связи многие ко многим » 09.05.2014 09:20:07

Евгений, привет! Хотелось одним запросом. Вот что с утра на свежую голову вышло:

	public function analogs()
	{
		return DB::table('models')
			->where('id', '!=', $this->id)
			->whereIn('id', function($query)
			{
				$query->select('model_id')
					->from('model_prototype')
					->whereIn('prototype_id', function($query)
					{
						$query->select('prototype_id')
							->from('model_prototype')
							->where('model_id', '=', $this->id);
					});
			})
			->get();
	}

Осталось сделать чтоб возвращало коллекцию объектов Model

#12 Re: Laravel 4 » Eloquent ORM Выборка по связи многие ко многим » 08.05.2014 21:32:52

Как я понимаю надо получить:
Все prototype_id из model_prototype где model_id = $this->model_id
Затем все model_id из model_prototype где prototype_id в списке полученном ранее
Затем уже получить все модели model_id которых в списке полученном в предыдущем шаге.

#13 Re: Laravel 4 » Eloquent ORM Выборка по связи многие ко многим » 08.05.2014 21:25:23

Все сложнее связь многие ко многим, и получить надо Models

		Schema::create('prototypes', function($table)
		{
			$table->increments('id');
			$table->string('name');
			$table->timestamps();
		});


		Schema::create('models', function($table)
		{
			$table->increments('id');
			$table->string('name');
			$table->timestamps();
		});

		Schema::create('model_prototype', function($table)
		{
			$table->increments('id');
			$table->integer('prototype_id');
			$table->integer('model_id');
			$table->timestamps();
		});

#14 Laravel 4 » Eloquent ORM Выборка по связи многие ко многим » 08.05.2014 20:42:06

flatter
Ответов: 8

Приветствую!

Есть:

class Model extends Eloquent {
	public function prototypes()
	{
		return $this->belongsToMany('Prototype');
	}

	public function scopeAnalogs()
	{
		return $query->where(??????????????);
	}

}

class Prototype extends Eloquent {
    public function models()
    {
        return $this->belongsToMany('Model');
    }
}

Требуется из Model получить все модели у которых прототипы как у текущей модели.

Пример:
М1 - П1
М1 - П2
М2 - П1
М2 - П3
М3 - П5
М4 - П2
М5 - П6

Должны получить:
М2
М4

Подскажите решение.

#15 Re: Laravel 4 » Сортировка по реквизиту связанной модели » 30.03.2014 12:07:57

Сам разобрался )

Product::join('shops', 'products.shop_id', '=', 'shops.id')->orderBy('date', 'desc')->take(6)->get();

#16 Laravel 4 » Сортировка по реквизиту связанной модели » 30.03.2014 11:37:44

flatter
Ответов: 1

Подскажите как реализовать сортировку по реквизиту связанной модели.

Имеем:

class Product extends Eloquent {

    public function shop()
    {
        return $this->belongsTo('Shop');
    }

И реквизит Date у Shop.

Необходимо получить все товары у которых задан магазин и отсортировать по реквизиту (Магазина) Date

#17 Re: Laravel 4 » L4, передача привязанной модели к группе маршрутов в контроллер » 17.01.2014 17:40:01

Похоже у меня в вопросе был ответ. Надо получить экземпляр в фильтре.

	protected $shop;

	public function __construct()
	{
		parent::__construct();

		$this->beforeFilter(function($route, $request) {
			$this->shop = $route->parameter('shop');
			return $this->shop->title;
		});
	}

#18 Re: Laravel 4 » L4, передача привязанной модели к группе маршрутов в контроллер » 17.01.2014 17:23:37

А есть возможность передать в конструктор экземпляр класса из параметра URL?
Нужен фильтр который зависит от этого параметра.

#19 Laravel 4 » L4, передача привязанной модели к группе маршрутов в контроллер » 12.01.2014 14:19:20

flatter
Ответов: 3

Подскажите как передать в контроллер?

routes.php

Route::bind('shop', function($id, $route)
{
	$shop = Shop::find($id);
	if ($shop == null)
	{
		$shop = $id;
	}
	return $shop;
});

Route::group(array('domain' => '{shop}.domain.local'), function()
{

// Так выводит
	Route::get('/test', function($shop)
	{
              return $shop;
	});
// Так нет
	Route::get('test', 'ShopController@test');
});

ShopController.php

class ShopController extends \BaseController {

	protected $shop;

	public function __construct(Shop $shop)
	{
		parent::__construct();
		$this->shop = $shop; 
	}

	public function test()
	{
		return $this->shop;
	}
}

#20 Laravel 4 » L4, Redirect::intended » 11.01.2014 14:41:32

flatter
Ответов: 0

Для перехода на страницу куда шел пользователь до срабатывания фильтра "auth" можно использовать Redirect::intendeed, но как реализовать чтобы пользователя возвращало на текущую страницу если он сам перешел по ссылке login?


Использование Redirect::intended:

public function postLogin()
{
    // Get all the inputs
    $userdata = array(
        'email' => Input::get('email'),
        'password' => Input::get('password')
    );

    // Declare the rules for the form validation.
    $rules = array(
        'email'  => 'Required',
        'password'  => 'Required'
    );

    // Validate the inputs.
    $validator = Validator::make($userdata, $rules);

    // Check if the form validates with success.
    if ($validator->passes())
    {
        // Try to log the user in.
        if (Auth::attempt($userdata))
        {
            // Redirect to intended page, 
            // notice this only works if we redirected to the login page using Redirect::guest(...)
            return Redirect::intended('/')->with('success', 'You have logged in successfully');
        }
        else
        {
            // Redirect to the login page.
            return Redirect::to('login')->withErrors(array('password' => 'Password invalid'))->withInput(Input::except('password'));
        }
    }

    // Something went wrong.
    return Redirect::to('login')->withErrors($validator)->withInput(Input::except('password'));
}

#21 Laravel 4 » L4, обработчик "не найдено" при привязке модели » 10.01.2014 22:42:54

flatter
Ответов: 1

Из мануала:

Route::model('user', 'User', function()
{
    throw new NotFoundException;

});

Подскажите как сделать чтоб срабатывал редирект если пользователь не найден?

#22 Re: Laravel 4 » L4, как использовать Carbon localized diffForHumans? » 05.01.2014 17:14:11

Евгений, спасибо!
Читал у вас в блоге про переход на Laravel поздравляю )

#23 Laravel 4 » L4, как использовать Carbon localized diffForHumans? » 04.01.2014 11:20:20

flatter
Ответов: 5

Подскажите как в L4 подключить Carbon localized diffForHumans?

#24 Общий раздел » fluxbb2 core на какой стадии? » 15.12.2013 13:01:12

flatter
Ответов: 0

Подскажите кто нибудь смотрел исходники fluxbb2 core на какой там стадии, имеет смысл разбираться и пытаться использовать на текущий момент?

#25 Re: Laravel 4 » [L4] RESTful при POST запросe вызывается Index() вместо Store() » 22.09.2013 21:46:09

Вопрос снят, не знаю где была ошибка но переделал по новой и все заработало.

Подвал раздела