Czy można przekazać, w jakiś sposób, parametr do funkcji relacji?Laravel: Przekaż parametr do funkcji relacji?
Mam obecnie następujące:
public function achievements()
{
return $this->belongsToMany('Achievable', 'user_achievements')->withPivot('value', 'unlocked_at')->orderBy('pivot_unlocked_at', 'desc');
}
Problem polega na tym, że w niektórych przypadkach nie sprowadzić kolumnę unlocked_at i zwraca błąd.
Próbowałem zrobić coś takiego:
public function achievements($orderBy = true)
{
$result = $this->belongsToMany (...)
if($orderBy) return $result->orderBy(...)
return $result;
}
i nazwać jak:
$member->achievements(false)->(...)
Ale to nie działa. Czy istnieje sposób przekazania parametrów do tej funkcji lub w inny sposób sprawdzenia, czy używany jest kod pivot_unlocked_at
?
Powinieneś być w porządku, aby robić to, co mówisz. Należy jednak pamiętać, że funkcje relacji działają inaczej, jeśli wywołasz je jako metodę nad właściwościami. Jeśli użyjesz ich jako właściwości, otrzymasz zestaw wyników (kolekcja), ale jeśli wywołasz je jako metody, otrzymasz narzędzie do tworzenia zapytań. Jeśli chcesz przekazać im parametry, oczywiście musisz wywoływać je jako metody, więc upewnij się, że wykonujesz '-> get()' w swoim kodzie wywołującym: '$ member-> achievementments (true) -> get() -> (...) "byłoby równoznaczne z' $ member-> achievementments -> (...) '. – alexrussell
awsm @alexrussell. uratował mi ból głowy .... –
Cieszę się, że moja rada z 2014 roku jest nadal aktualna :) – alexrussell