Добавить методы отношений к вашим моделям. UserModel
public function professions()
{
return $this->hasMany(Profession::class);
}
ПрофессияModel:
public function users()
{
return $this->hasMany(User::class);
}
И теперь вы можете сделать это:
$user = User::where('user_group', 2)->with('professions')->get();
dd($user->professions);
Похоже, что вы запрашиваете селектор .completedLabel
глобально, когда вам просто нужно найти его внутри элемента, по которому щелкнули.
Может работать область действия селектора запросов до элемента, который вы храните в listItem . Вот пример:
const label = listItem.querySelector('.completedLabel');
Таким образом, он работает с повторным использованием вашего образца кода:
//move li item to completed list when checkbox selected
ul.addEventListener('change', (e) => {
const checkbox = e.target;
const checked = checkbox.checked;
const listItem = e.target.parentNode.parentNode;
const completedItems = document.querySelector('.completedItems');
const label = listItem.querySelector('.completedLabel');
if (checked) {
completedItems.appendChild(listItem);
label.style.display = 'none';
}
});
Однако реализация может быть немного улучшена.
Не могли бы вы пересмотреть свою стратегию в решении этого дела? Рекомендуется работать с данными, такими как массивы и объекты, вместо узлов DOM.
Пожалуйста, рассмотрите этот пример
const form = document.forms.form;
const todoList = document.querySelector('#todoList');
const completedList = document.querySelector('#completedList');
const tasks = [];
form.addEventListener('submit', handleSubmit, true);
todoList.addEventListener('change', handleInputChange, true);
function handleSubmit(event) {
event.preventDefault();
const task = this.task;
if (task.value === '') {
return;
}
const item = createTask(task.value);
tasks.push(item);
task.value = '';
syncTodoList();
}
function handleInputChange(event) {
const target = event.target;
if (target.nodeName === 'INPUT') {
const id = event.target.id;
const task = tasks.find(task => task.id === parseInt(id, 10));
task.status = 'completed';
syncTodoList();
syncCompletedList();
}
}
function createTask(task) {
return {
id: Date.now(),
text: task,
status: 'todo'
};
}
function syncTodoList() {
const todos = tasks
.filter(task => task.status === 'todo')
.map(task => `<li>${task.text} <input type="checkbox" id="${task.id}"></li>`)
.join('');
todoList.innerHTML = todos;
}
function syncCompletedList() {
const completeds = tasks
.filter(task => task.status === 'completed')
.map(task => `<li>${task.text}</li>`)
.join('');
completedList.innerHTML = completeds;
}
<form name="form">
<input id="task">
<button>Send</button>
</form>
<p>Todo</p>
<ul id="todoList"></ul>
<p>Completed</p>
<ul id="completedList"></ul>