cities
и airports
(обратите внимание – названия во мн. числе)id | name | другие поля, если нужно
id | city_id | name | другие поля, если нужно
City
и Airport
(обратите внимание – названия в ед. числе)City
создать отношение один-ко-многим (в городе может быть несколько аэропортов)public function airports(): \Illuminate\Database\Eloquent\Relations\HasMany {}
return $this->hasMany(\App\Models\Airport::class);
}
Airport
создать обратное отношениеpublic function city(): \Illuminate\Database\Eloquent\Relations\BelongsTo {}
return $this->belongsTo(\App\Models\City::class);
}
$from = $request->input['otkuda'];
$city = \App\Models\City::whereName($from) // По названию города
->firstOrFail();
// или
// $fromId = $request->input['otkuda'];
// $city = \App\Models\City::findOrFail($fromId); // По ID города
dump($city->toArray()); // Получили город
dump($city->airports->toArray()); // Получили список аэропортов города
$airportId = $request->input['airportId'];
$airport = \App\Models\Airport::findOrFail($airportId);
dump($airport->toArray()); // Получили аэропорт по ID
dump($airport->city->toArray()); // Получили город, в котором этот аэропорт находится.
require-dev
секции + можно дать ссылку на пакет в suggest
секции.if
.function dispatch<T>(key: DispatchKey<T>, value: DispatchValue<T>): void;
function dispatch<T>(keys: DispatchKey<T>[], iterator: (key: DispatchKey<T>) => DispatchValue<T>): void;
function dispatch<T>(
keyOrKeys: DispatchKey<T> | DispatchKey<T>[],
valueOrIterator: DispatchValue<T> | ((key: DispatchKey<T>) => DispatchValue<T>)
): void {
if (Array.isArray(keyOrKeys) && typeof valueOrIterator === 'function') {
setState((prev) => {
const updated = keyOrKeys.map((key) => valueOrIterator(key));
console.log(updated);
return prev;
});
} else {
setState((prev) => ({
...prev,
[keyOrKeys]: valueOrIterator,
}));
}
}
А ещё динамическая типизация сильно экономит время на написание кода - это очень нехилая оптимизация рабочего процесса.
Во-первых, откуда вдруг на клиенте должны появиться огромные объёмы данных, которые будут генерировать эти ошибки и затруднять их поиск? Вы собрались логику на клиенте считать? Тогда у нас уже тут принципиальное несовпадение по вопросам "соответствующих инструментов". Клиент в вебе нужен только для представления. Ну ещё какой-то интерактив - формы, события... Всё.
как мартышка ковыряешься с проставлением типов (а иногда это и не особо очевидно), а потом оказывается что какой-нибудь популярный плагин (условный слайдер) в твоей экосистеме - не типизирован. Ручками писать? Потрошить внутренности плагина? Искать аналог?
declare module 'ldapjs-type-parsers';
, где подставить имя пакета, для которого нет типов.window.addEventListener('load', async () => {
var data1 = await $.getJSON('https://json файл разные');
console.log('Получены данные:', data1);
$(".mypanel").html(data1.hls);
var A = ',{"get":"';
var B = '",';
var C = '"img":"';
var D = '"}';
var master = [A,data1.hls,B,C,D];
var data2 = await $.post('zapros2.php', {name1: master});
console.log('Получены еще данные:', data2);
});
const props = defineProps({
showBgBlue: {
type: Boolean,
default: true,
},
});
const mainClass = computed(() => props.showBgBlue ? 'bg-blueGray-50 py-12' : 'bg-white');
const MyForm = () => {
const name = useSelector((state) => state.user.form.name);
const surname = useSelector((state) => state.user.form.surname);
const email = useSelector((state) => state.user.form.email);
const agree = useSelector((state) => state.user.form.agree);
...
}
const Field = ({ name, ... }) => {
const value = useSelector(...);
...
}
const MyForm = () => {
return (
<FormContainer ...>
<Field name="name"/>
<Field name="surname"/>
<Field name="email"/>
...
</Form>
)
}
class Something {
constructor(private text: string){
}
public static async create(): Promise<Something>{
const text = await Promise.resolve("txt");
return new Something(text);
}
}
let
— const
).bashrc
, добавьте туда строки LANG="ru_RU.UTF-8"; export LANG
LC_ALL="ru_RU.UTF-8"; export LC_ALL