Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
вообщем, берём вот эту команду:
c:/OpenServer/modules/php/PHP-5.4.26/php.exe -i | grep 'Configuration File'
Покажет, где находятся php.ini файл.
Можно запихнуть в тот же c:\windows, но лучше всего запихнуть в папку, с которой запускаем сам php, т.е. в c:/OpenServer/modules/php/PHP-5.4.26/
Не знаю, поможет или нет, но https://github.com/lazychaser/cruddy тут есть self relation, в демо аппе посмотрите.
хочется посмотреть какие модели созданы, что за файлы генерит CMS и т.д.
p.s. вы всегда верите в то, что написано на упаковке?
Случайно нашёл CMSку под laravel 4.
http://mangopik.com/lcrud.2.1/ - вот админка. Покопался - понравился crud builder.
Раньше юзал https://github.com/FrozenNode/Laravel-Administrator и https://github.com/lazychaser/cruddy
Но в этом CMS всё в одном.
Есть одно "но" - она платная. Стоит 20 бачей. Может есть на форуме кто купил уже эту CMSку? Поделитесь плиз архивчиком - хочу протестить - если понравится - обяз куплю.
3 вариант насколько я понял смахивает на STI, сейчас читаю вот эту статью:
snooptank()com/single-table-inheritance-with-eloquent-laravel-4/
оттуда нашёл решение
https://gist.github.com/asakurayoh/4100877
сейчас пробую
У меня есть модель Beneficiary. В начале подразумевалось, что Beneficiary будет одним человеком, но потом выяснилось, что он может быть и сообществом.
Т.е. надо наследоваться от Beneficiary на 2 модели:
Group
— amount_female
— amount_male
Что лучше использовать?
Нативно ларавел 4 поддерживает полиморфные связи, но так и не понял как его юзать и стоит ли его юзать вообще.
В общем, в данный момент курю разные мануалы и туториалы. В одной из таковых нашёл такую конструкцию:
<li class="{{ (Route::is('home')) ? 'active' : null }}"><a href="{{ route('home') }}">Home</a></li>
Здесь для себя нашёл 2 новые вещи:
1) метод is класса Route — в документации не нашёл
2) route(’home’) — как это сделано?
По первому пункту начал искать в API и не смог найти, как им вообще пользоваться. В старом api хоть как-то разбирался. А сейчас вообще не догоняю.
Да я понимаю что он правильный, но у меня конструкция выглядит так:
$aids = Aid::with('program', 'ben', 'branch', 'aid_type');
if (Input::has('department')) {
$programs = Department::find(Input::get('department'))->programs()->lists('id');
$aids = $aids->whereIn('program_id', $programs);
}
if (Input::has('program')) {
$aids = $aids->where('program_id', '=', Input::get('program'));
}
if (Input::has('aid_type')) {
$aids = $aids->where('aid_type', '=', Input::get('aid_type'));
}
$aids->paginate(10);
В общем, есть у меня модель Aid, я хочу сделать выборку, а потом использовать paginate:
$a = Aid::all();
$a = $a->where('received_at', '>', '2013-14-08');
$a->paginate(10);
Но так не пашет, я знаю, что нужно юзать paginator, но можно ли как-то по другому всё сделать, без использования paginator?
Получается только так можно делать:
$a = Aid::where('received_at', '>', '2013-14-08')->paginate(10);
<div class="span4">
{{ Form::label('name', 'Наименование') }}
{{ Form::text('name', $order->name, array('class'=> 'span3', 'placeholder' => 'Наименование товара')) }}
{{ Form::label('url', 'Ссылка') }}
{{ Form::url('url', $order->url, array('class'=> 'span3', 'placeholder' => 'Ссылка на товар')) }}
скажем вот мой кусок кода. я хочу закомментировать вот это:
{{ Form::label('url', 'Ссылка') }}
{{ Form::url('url', $order->url, array('class'=> 'span3', 'placeholder' => 'Ссылка на товар')) }}
если я делаю {{-- --}} то коммент работает только в одну строку и то в конце выводится "?> —}}"
sqlSELECT * FROM order_user JOIN role_user USING ( user_id ) JOIN orders ON ( orders.id = order_user.order_id ) WHERE ( role_user.role_id !=19 OR order_user.user_id =18 )
где 19 — это айдишник роли, а 18 это айдишник текущего пользователя.
$orders = DB::table('order_user')
->join('role_user', 'order_user.user_id', '=', 'role_user.user_id')
->join('orders', 'orders.id', '=', 'order_user.order_id')
->where('role_user.role_id', '!=', 19)
->or_where('order_user.user_id', '=', 18)
->for_page(1, 10)
->get();
user
order
order_user
role
role_user
У каждого юзера может быть один или несколько заказов, у заказа может быть несколько юзеров, а может и не быть.
В свою очередь есть роли у пользователей (admin, manager, shipper).
Вопрос, как возвратить заказы, у которого нет пользователя с определенной ролью, например manager.
Это мне надо для того, чтобы показывать пользователям с ролью manager только те заказы, которые ему присвоены и те, которые не присвоены никому с такой ролью.
У меня есть несколько полей в БД например, process_at, arr_cn_at и т.д. с префиксом at.
Как сделать проверку на атрибут, если он имеет префикс at, то возвращать в каком-то формате.
public function get_process_date()
{
$date = $this->get_attribute('process_at');
return ($date)?date('d.m.Y', strtotime($date)):Null;
}
public function get_arr_cn()
{
$date = $this->get_attribute('arr_cn_at');
return ($date)?date('d.m.Y', strtotime($date)):Null;
}
public function get_arr_kg()
{
$date = $this->get_attribute('arr_kg_at');
return ($date)?date('d.m.Y', strtotime($date)):Null;
}
public function set_process_date($date)
{
$this->set_attribute('process_at', ($date)?new DateTime($date):Null);
}
public function set_arr_cn($date)
{
$this->set_attribute('arr_cn_at', ($date)?new DateTime($date):Null);
}
public function set_arr_kg($date)
{
$this->set_attribute('arr_kg_at', ($date)?new DateTime($date):Null);
}
Как видите код сильно разросся. Это можно как-то лаконично сделать?
Или может быть указать в массиве атрибуты, чтобы они возвращались в каком-то формате? Есть подобное?
http://laravel.ru/forum/viewtopic.php?id=98
вот тут все отлично показано
Спасибо еще раз. Вынесу в контроллер.
А насчет Order::$accessible не думал, что можно "на лету" изменять.
И еще вопрос, у меня есть форма.
Если он admin или manager, то все поля можно обновлять данного объекта, а если shipper, то только пару полей. например, если есть поля:
name
url
notes
ship_at
delivery_at
то shipper может изменить только ship_at и delivery_at.
на ум приходит только это:
взять 2 массива
$orderinfo_all = array(
'name' => Input::get('name'),
'url' => Input::get('url'),
'notes' => Input::get('notes'),
'ship_at' => Input::get('ship_at'),
'delivery_at' => Input::get('delivery_at'),
);
$orderinfo_ship = array(
'ship_at' => Input::get('ship_at'),
'delivery_at' => Input::get('delivery_at'),
);
Order::update($id, $user->is('Shipper')?$orderinfo_ship:$orderinfo_all);
- правильно ли я сделал?
Вместо where()->or_where() я бы сделал вложенный where(), так как может получиться, что для менеджера вернётся запрос с установленными условиями manager_id = X OR manager_id = 0, а в коде затем добавится ещё одно and-условие и запрос станет некорректным без скобок:
PHP...::get_orders($user)->where('x', '=', 'y');
// = SELECT ... WHERE manager_id = X OR manager_id = 0 AND x = 'y'PHPstatic::where(function ($query) {
$query->where('manager_id', '=', $user->id)->or_where('manager_id', '=', 0);
});
спасибо. а вообще правильно что в модели все эти проверки делаю?
public static function get_orders($user)
{
if ($user->is('Admin')) {
return static::query();
}
if ($user->is('Manager')) {
return static::where('manager_id', '=', $user->id)->or_where('manager_id', '=', 0);
} elseif ($user->is('Shipper')) {
return static::where('shipper_id', '=', $user->id)->or_where('shipper_id', '=', 0);
} elseif ($user->is('Dealer')) {
return static::where('user_id', '=', $user->id);
}
}
это у меня в модели. все работает. правильно ли я сделал?
сам же отвечу на свой вопрос - через геттеры и сеттеры в методе
{{ Form::label('process_date', 'Дата заказа') }}
{{ Form::text('process_date', $order->process_date, array('class'=>'datepicker'))}}
process_date - возвращает дату "2013-04-12 00:00:00". Как сделать так, чтобы она возвращала в другом формате, например 12.04.2013?