Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Коллеги, я не совсем понимаю, как правильно писать функции замыкания.
Например:
...
->where(function($query){
$query->where('field', $num);
})
или так:
...
->where(function($query){
return $query->where('field', $num);
})
В ранних версиях вроде как нужно было писать return $query, теперь проверяю без return - работает...
Спасибо за ответ.
А кто-нибудь знает, как ответить на второй вопрос?
Как удалить связь в таблице Cells не удаляя ячейки и единицы оборудования?
Всё, разобрался...
$equipment = Equipment::find($equipment_id);
$cell = Cell::find($cell_id);
$cell->content()->associate( $equipment );
$cell->save();
или
$cell->content()->dissociate();
$cell->save();
Хотелось бы узнать, смогу ли я реализовать следующее:
Есть следующие сущности: оборудование, расходники и ячейки. Оборудование и расходники могут лежать в ячейках.
Для оборудования в безе создается запись для каждой единицы оборудования, а для расходников в базе фиксируется только название расходника, некое описание (например Ч/Б картридж ABC123 для принтера SUPERPRINTER-123), а количество данного расходника не фиксируется. Т.е. данного расходника физически может быть 5 штук и каждый из этих пяти может лежать в отдельной ячейке.
Т.о. получается:
- в ячейке может лежать как единица оборудования, так и расходник (Morph Relation)
- одна единица оборудования (одна запись в БД) может лежать только в одной ячейке (один к одному)
- одна единица расходника (одна запись в БД) может лежать в нескольких ячейках (один ко многим)
Сразу вопрос: это реалезуемо в Laravel? Т.е. полиморфные связи и одновременно один ко одному и один ко многим.
Структура таблиц
Cells
id
name
content_type
content_id
Equipment
id
name
Suplies
id
name
Модели
class Cell extends Model {
public function content()
{
return $this->morphTo();
}
}
class Equipment extends Model {
public function cell()
{
return $this->morphOne('App\Cell', 'content');
}
}
class Suply extends Model {
public function cell()
{
return $this->morphMany('App\Cell', 'content');
}
}
Вопрос 2
Ячейка может быть пустая. Т.е. поля content_type и content_id могут быть пустыми
Как мне удалить связь из ячейки (очистить поля выше), не удаляя при этом ячейку?
Т.е сохранить могу:
$equipment = Equipment::find($equipment_id);
$cell = Cell::find($cell_id);
$equipment->cell()->save($cell);
А вот как очистить ячейку?
Суть вопроса примерно следующая...
Есть куча таблиц, включая таблицу с пользователями. В каждой таблице я хочу добавить поля: created_by и updated_by (т.е. кем создана запись и кем модифицирована). Эти два поля - это ссылки на id конкретного пользователя. Таблица с пользователями также должна иметь данные поля. Т.е. создали нового пользователя, соответственно записываем кто создал (или изменил).
Таким образом, обращаясь к свойству created_by (updated_by) я хочу получить объект "Пользователь", как для модели "Пользователь", так и для остальных моделей.
Например, ограничимся двумя моделями: User и Customer (организация). Пользователь может быть представителем только одного заказчика (организации), а организация может иметь много пользователей. Это классическая схема и с ее реализацией проблем нет:
class User extends Authenticatable
{
...
public function customer()
{
$this->belongsTo('App\Customer');
}
}
class Customer extends Model
{
public function users()
{
$this->hasMany('App\User');
}
}
А как реализовать соотношения для полей created_by (updated_by)?
Страницы 1